基于对象数组中的值创建或重新排序数组



我有一个对象数组,其中一部分看起来像这样:

[Results] => Array
(
[0] => stdClass Object
(
[Id] => 3103
[Tag] => Atticus Ross
)
[1] => stdClass Object
(
[Id] => 3105
[Tag] => Atticus Ross
)
[2] => stdClass Object
(
[Id] => 3106
[Tag] => Grant Marshall
)
[3] => stdClass Object
(
[Id] => 3107
[Tag] => Trent Reznor
)
[4] => stdClass Object
(
[Id] => 3108
[Tag] => Atticus Ross
)
[5] => stdClass Object
(
[Id] => 3109
[Tag] => Atticus Ross
)
[6] => stdClass Object
(
[Id] => 3110
[Tag] => Grant Marshall
)
[7] => stdClass Object
(
[Id] => 3114
[Tag] => Trent Reznor
)    
)

[Id] 是唯一的。

[标记] 不是唯一的。

我需要重组它,以便我知道哪些 ID 对应于每个标签。每个标签只能列出一次。像这样:

Array
(
[Atticus Ross] => Array
(
[0] => 3103
[1] => 3105
[2] => 3108
[3] => 3109
)
[Grant Marshall] => Array
(
[0] => 3106
[1] => 3110
)   
[Trent Reznor] => Array
(
[0] => 3107
[1] => 3114
)        
)

它不一定需要这样的结构,但希望能更容易看到我正在寻找的东西。

我尝试遍历原始数组,并且能够获得唯一的标签数组,但我不确定如何为每个标签添加/合并 ID:

$all_tags = array();
foreach ($results as $result) {
$Id = $result->Id;
$Tag = $result->Tag;
$all_tags[] = $Tag;
$all_tags_unique = array_values(array_unique($all_tags));
}

我可能离这里很远。感谢任何帮助!

只需循环遍历结果元素并将它们添加到由 Tag 标识的元素中就足够了......

$all_tags = array();
foreach ($results as $result) {
$all_tags[ $result->Tag ][] = $result->Id;
}

相关内容

最新更新