可以通过使用array_reduce()函数对具有多个键的多维数组进行分组。以下是将php数组按两个字段分组的示例代码:
$myArray = array(
array('name' => 'John', 'age'=>25, 'gender' => 'Male'),
array('name' => 'Jane', 'age'=>25, 'gender' => 'Female'),
array('name' => 'Dave', 'age'=>30, 'gender' => 'Male'),
array('name' => 'Maggie', 'age'=>30, 'gender' => 'Female'),
array('name' => 'Michael', 'age'=>25, 'gender' => 'Male')
);
function groupByTwoFields($array, $key1, $key2) {
return array_reduce($array, function($result, $item) use ($key1, $key2) {
$result[$item[$key1]][$item[$key2]][] = $item;
return $result;
}, array());
}
$groupedArray = groupByTwoFields($myArray, 'age', 'gender');
print_r($groupedArray);
上述代码将按照“年龄”,“性别”两个字段对数组进行分组,输出结果如下:
Array
(
[25] => Array
(
[Male] => Array
(
[0] => Array
(
[name] => John
[age] => 25
[gender] => Male
)
[1] => Array
(
[name] => Michael
[age] => 25
[gender] => Male
)
)
[Female] => Array
(
[0] => Array
(
[name] => Jane
[age] => 25
[gender] => Female
)
)
)
[30] => Array
(
[Male] => Array
(
[0] => Array
(
[name] => Dave
[age] => 30
[gender] => Male
)
)
[Female] => Array