[英]merging subarrays of multidimensional arrays while sorting array alphabetically
Trying to alphabetically merge arrays with foreach loop. 尝试按字母顺序将数组与foreach循环合并。
<?php
$fruits = array(
'Apple' => array('ids'=>array(1,2)),
'Banana' => array('ids'=>array(3,4)),
'Ananas' => array('ids'=>array(5,6))
);
$result = array();
foreach ($fruits as $name=>$subarr) {
$first_letter = mb_substr($name, 0, 1);
$result[$first_letter] = $subarr;
}
print_r($result); print_r($ result); gives me smth like 给我像
Array ( [A] => Array ( [ids] => Array ( [0] => 5 [1] => 6 ) )instead of smth like 而不是像[B] => Array ( [ids] => Array ( [0] => 3 [1] => 4 ) )
)
\n [A] => Array [A] =>数组\n ( (\n [ids] => Array [ids] =>数组\n ( (\n [0] => 1 [0] => 1\n [1] => 2 [1] => 2\n [2] => 5 [2] => 5\n [3] => 6 [3] => 6\n ) )\n ) )\n
how can I fix it? 我该如何解决?
You overwrite your result every iteration in this line: 您会在此行的每次迭代中覆盖结果:
$result[$first_letter] = $subarr;
Just create a new array if the subArray in the result array doesn't exists and merge the ids
subArray into your result array. 如果结果数组中的subArray不存在,则只需创建一个新数组,然后将ids
subArray合并到结果数组中即可。
foreach ($fruits as $name=>$subarr) {
$first_letter = mb_substr($name, 0, 1);
if(!isset($result[$first_letter]))
$result[$first_letter] = [];
$result[$first_letter] = array_merge($result[$first_letter], $subarr["ids"]);
}
Please try to use foreach loop. 请尝试使用foreach循环。
$fruits = array(
'Apple' => array('ids'=>array(1,2)),
'Banana' => array('ids'=>array(3,4)),
'Ananas' => array('ids'=>array(5,6))
);
$result = array();
foreach ($fruits as $name=>$subarr) {
$first_letter = mb_substr($name, 0, 1);
foreach($subarr as $key=>$value){
foreach ($value as $gkey => $gvalue) {
$result[$first_letter]['ids'][] = $gvalue;
}
}
}
echo "<pre>";
print_r($result);
Display above code output like below. 显示上面的代码输出,如下所示。
Array
(
[A] => Array
(
[ids] => Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
)
)
[B] => Array
(
[ids] => Array
(
[0] => 3
[1] => 4
)
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.