php - 合并对象数组中除一个值之外的重复项... php/mysql

标签 php mysql arrays object join

这是我的数据的简化版本。这是使用 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/

相关文章:

c - 为什么C中数组指针的大小总是8?

c++ - 输出逻辑错误

php - Laravel 太慢了

javascript - 如何将 JSON 数组插入数据库

mysql - 有没有一种方法可以将客户端发送的值本质上传递给 spring 中的 sql 查询的局部变量?

java - 如何将自动递增的 ID 值检索到 JLabel

Python - 读写结构化二进制文件

php - 似乎无法在 pear.bat 中设置我的 php.exe 路径

c# - PHP 中的 MACTripleDES

php - 如何使用 mysql_free_result()?