Php 如何为多个键排序多维数组?
这是代码:Php 如何为多个键排序多维数组?,php,Php,这是代码: How order an array so structured for [name] and to parity of [name] for [age] ? [0] => Array ( [name] => Mary [age] => 32 ) [1] => Array ( [name] => Mary
How order an array so structured for [name] and to parity of [name] for [age] ?
[0] => Array
(
[name] => Mary
[age] => 32
)
[1] => Array
(
[name] => Mary
[age] => 31
)
[2] => Array
(
[name] => Anna
[age] => 30
)
Output:
Name | Age
----------
Anna | 30
Mary | 31
Mary | 32
您需要使用:
使用用户定义的比较函数按值对数组排序
示例4
function sort(&$array) {
function build_sorter($key) {
return function ($a, $b) use ($key) {
return strnatcmp($a[$key], $b[$key]);
};
}
usort($array, build_sorter(["name"]));
usort($array, build_sorter(["age"]));
}
您可以使用此功能
<?php
$array[0] = array('key_a' => 'z', 'key_b' => 'c');
$array[1] = array('key_a' => 'x', 'key_b' => 'b');
$array[2] = array('key_a' => 'y', 'key_b' => 'a');
function build_sorter($key) {
return function ($a, $b) use ($key) {
return strnatcmp($a[$key], $b[$key]);
};
}
usort($array, build_sorter('key_b'));
foreach ($array as $item) {
echo $item['key_a'] . ', ' . $item['key_b'] . "\n";
}
?>
演示链接:请更加具体,并显示您的预期输出。另外,显示您迄今为止尝试过的代码。您能粘贴代码吗?您想按名称和年龄对数组进行排序吗?是的,所以。我也用代码更新了帖子。请检查我的回答在这一行返回“非法偏移类型”:“返回strnatcmp($a[$key],$b[$key]);”。数组的结构如上所示。
<?php
function Func_Sort($arr, $index) {
$b = array();
$c = array();
foreach ($arr as $key => $value) {
$b[$key] = $value[$index];
}
asort($b);
foreach ($b as $key => $value) {
$c[] = $arr[$key];
}
return $c;
}
$activities = array (
'1' => array(
'name' => 'Mary',
'age' => 32,
),
'2' => array(
'name' => 'Mary',
'age' => 31,
),
'3' => array(
'name' => 'anna',
'age' => 30
),
);
$sorted_act = Func_Sort($activities, 'age');
echo "<pre>";
print_r($sorted_act);
?>