如何按特定子数组值对多维数组进行分组? [英] How to group a multidimensional array by a particular subarray value?
问题描述
我有一个多维数组,正在尝试根据特定列中的值对它们进行分组.
I have a multidimensional array and am trying to group them according to the value in a specific column.
我正在尝试按 level
对它们进行分组,但实际上我事先并不知道级别.所以,我不能把它放在 for
循环中并说 while $i <7
,因为我不知道 7
是 level 键的最大值,坦率地说,即使我知道,我也不确定我是否需要这样做...
I'm trying to group them by level
, but I won't actually know the level beforehand. So, it's not like I can put it in a for
loop and say while $i < 7
, because I won't know that 7
is the maximum value for the level key, and frankly, I'm not sure that's how I would need to do it even if I did...
Array (
[0] => Array (
[cust] => XT8900
[type] => standard
[level] => 1
)
[1] => Array (
[cust] => XT8944
[type] => standard
[level] => 1
)
[2] => Array (
[cust] => XT8922
[type] => premier
[level] => 3
)
[3] => Array (
[cust] => XT8816
[type] => permier
[level] => 3
)
[4] => Array (
[cust] => XT7434
[type] => standard
[level] => 7
)
)
我希望产生什么:
Array (
[1] => Array (
[0] => Array (
[cust] => XT8900
[type] => standard
)
[1] => Array (
[cust] => XT8944
[type] => standard
)
)
[3] => Array (
[2] => Array (
[cust] => XT8922
[type] => premier
)
[3] => Array (
[cust] => XT8816
[type] => permier
)
)
[7] => Array (
[4] => Array (
[cust] => XT7434
[type] => standard
)
)
)
推荐答案
你需要先按级别分组
使用 foreach 循环到数组中检查级别是否与前一项相同,然后将其与该数组分组
Use foreach to loop into array check if the level is the same with the previous item then group it with that array
$templevel=0;
$newkey=0;
$grouparr[$templevel]="";
foreach ($items as $key => $val) {
if ($templevel==$val['level']){
$grouparr[$templevel][$newkey]=$val;
} else {
$grouparr[$val['level']][$newkey]=$val;
}
$newkey++;
}
print($grouparr);
<小时>
print($grouparr); 的输出将按照您希望的格式显示
The output of print($grouparr); will display like the format you hoped for
你也可以试试
print($grouparr[7]);
会显示
[7] => Array (
[4] => Array (
[cust] => XT7434
[type] => standard
)
)
或者
print($grouparr[3]);
会显示
[3] => Array (
[2] => Array (
[cust] => XT8922
[type] => premier
)
[3] => Array (
[cust] => XT8816
[type] => permier
)
)
这篇关于如何按特定子数组值对多维数组进行分组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!