我检查了这个问题并回答:
How to group a multidimensional array by a particular subarray value?
他想按“级别”对结果进行分组。但是如何将其按“级别”然后按“类型”分组呢?
答案 0 :(得分:0)
非常简单。遍历$ items数组。获取每个项目的级别和类型,如果尚未设置,请使用一个空数组对其进行初始化。然后只需将“ cust”值推入数组即可。
我已经给出了下面的代码。
我假设“ $ items”是一个包含输入的数组。
$g = [];
foreach($items as $k => $v) {
$l = $v["level"];
$t = $v["type"];
$c = $v["cust"];
if(!isset($g[$l])) {
$g[$l] = [];
}
if(!isset($g[$l][$t])) {
$g[$l][$t] = [];
}
$g[$l][$t][] = [
"cust" => $c
];
}
var_dump($g);
此代码的输出如下:
array(3) {
[1]=>
array(1) {
["standard"]=>
array(2) {
[0]=>
array(1) {
["cust"]=>
string(6) "XT8900"
}
[1]=>
array(1) {
["cust"]=>
string(6) "XT8944"
}
}
}
[3]=>
array(1) {
["premier"]=>
array(2) {
[0]=>
array(1) {
["cust"]=>
string(6) "XT8922"
}
[1]=>
array(1) {
["cust"]=>
string(6) "XT8816"
}
}
}
[7]=>
array(1) {
["standard"]=>
array(1) {
[0]=>
array(1) {
["cust"]=>
string(6) "XT7434"
}
}
}
}
[P.S。]:您也可以使用sort轻松解决此问题。那是解决这个问题的另一种方式。