按特定值合并关联数组不起作用
Merging an associalive array by specific value not working
我想通过 group_order 值合并 $my_array
。
初始$my_array
结构:
array(4) {
array(1) {
object(stdClass) {
["title"]=> string(23) "Title 1"
["group_order"]=> string(1) "2"
}
}
array(1) {
object(stdClass) {
["title"]=> string(32) "Title 2"
["group_order"]=> string(1) "1"
}
}
array(1) {
object(stdClass) {
["title"]=> string(21) "Title 3"
["group_order"]=> string(1) "1"
}
}
array(1) {
object(stdClass) {
["title"]=> string(23) "Title 4"
["group_order"]=> string(1) "2"
}
}
}
想要的结果:
array(2) {
array(2) {
object(stdClass) {
["title"]=> string(23) "Title 1"
["group_order"]=> string(1) "2"
}
object(stdClass) {
["title"]=> string(23) "Title 4"
["group_order"]=> string(1) "2"
}
}
array(2) {
object(stdClass) {
["title"]=> string(32) "Title 2"
["group_order"]=> string(1) "1"
}
object(stdClass) {
["title"]=> string(21) "Title 3"
["group_order"]=> string(1) "1"
}
}
}
我试过这样做:
foreach ($my_array as $row) {
foreach ($row as $item) {
$grouped[$item->group_order] = $row;
}
}
但是第二组元素总是覆盖第一组元素,而不是包含 4 个项目的数组,而是两个。我也试了array_merge(),结果是一样的
尝试在末尾添加空括号 []
以便将值附加到数组,而不是覆盖它们。
foreach ($my_array as $row) {
foreach ($row as $item) {
$grouped[$item->group_order][] = $item;
}
}
您添加了出于某种原因不需要的 foreach?为了让他们分开,只需给他们一个 ID。
$i=0;
foreach ($myarray as $item) {
$grouped[$item->group_order][$i] = $item;
$i++;
}
我想通过 group_order 值合并 $my_array
。
初始$my_array
结构:
array(4) {
array(1) {
object(stdClass) {
["title"]=> string(23) "Title 1"
["group_order"]=> string(1) "2"
}
}
array(1) {
object(stdClass) {
["title"]=> string(32) "Title 2"
["group_order"]=> string(1) "1"
}
}
array(1) {
object(stdClass) {
["title"]=> string(21) "Title 3"
["group_order"]=> string(1) "1"
}
}
array(1) {
object(stdClass) {
["title"]=> string(23) "Title 4"
["group_order"]=> string(1) "2"
}
}
}
想要的结果:
array(2) {
array(2) {
object(stdClass) {
["title"]=> string(23) "Title 1"
["group_order"]=> string(1) "2"
}
object(stdClass) {
["title"]=> string(23) "Title 4"
["group_order"]=> string(1) "2"
}
}
array(2) {
object(stdClass) {
["title"]=> string(32) "Title 2"
["group_order"]=> string(1) "1"
}
object(stdClass) {
["title"]=> string(21) "Title 3"
["group_order"]=> string(1) "1"
}
}
}
我试过这样做:
foreach ($my_array as $row) {
foreach ($row as $item) {
$grouped[$item->group_order] = $row;
}
}
但是第二组元素总是覆盖第一组元素,而不是包含 4 个项目的数组,而是两个。我也试了array_merge(),结果是一样的
尝试在末尾添加空括号 []
以便将值附加到数组,而不是覆盖它们。
foreach ($my_array as $row) {
foreach ($row as $item) {
$grouped[$item->group_order][] = $item;
}
}
您添加了出于某种原因不需要的 foreach?为了让他们分开,只需给他们一个 ID。
$i=0;
foreach ($myarray as $item) {
$grouped[$item->group_order][$i] = $item;
$i++;
}