这是我的数据的简化版本。这是使用 JOIN 进行查询的结果,并生成如下数据:
id name picture
1 Foo picture_001.jpg
1 Foo picture_002.jpg
2 Bar another_image.jpg
3 Baz some_picture_001.jpg
3 Baz some_picture_002.jpg
输出是一个对象数组,如下所示(最小化以仅显示 ID 1 的数据):
print_r($my_data); // produces:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => Foo
[picture] = picture_001.jpg
)
[1] => stdClass Object
(
[id] => 1
[name] => Foo
[picture] = picture_002.jpg
)
)
此数组可能包含多个具有不同 ID、名称和图片的对象。
我试图循环遍历每个对象并输出数据。我这样做是这样的:
foreach($object as $item)
{
echo $item->id;
}
这确实有效,但正如预期的那样,连接会产生重复的数据。
我已经寻找解决方案,但我不知道如何防止这种重复发生。
在上面的数据转储中,我希望输出为:
ID 1
Name: Foo
Pictures in Foo:
picture_001.jpg
picture_002.jpg
ID 2
Name:Bar
Pictures in Bar
another_image.jpg
因此,如果一个项目有多张图片,则会将其分组在一起。
我可以提供 SQL,并可能更改数据的输出方式,但我想首先了解其背后的方法,以及如何进行此操作。
提前致谢。
最佳答案
$my_parsed_data = array();
foreach($mydata as $data){
$my_parsed_data[$data->id]["id"] = $data->id;
$my_parsed_data[$data->id]["name"] = $data->name;
$my_parsed_data[$data->id]["photos"][] = $data->picture;
}
这个解决方案将为您提供一个简单的信息数组,您想要的格式...如果您想要一个对象数组,那么您必须创建一个模拟此代码的类,例如:
class ArrayList{
private elements = array();
public function addElement(){
//some magic here =)
}
}
关于php - 合并对象数组中除一个值之外的重复项... php/mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531829/