PHP usort排序多个字段 [英] PHP usort sorting multiple fields
本文介绍了PHP usort排序多个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
时有可能使用 usort
来多个字段多维数组排序?例如,我要排序名称
按字母顺序,然后从我想通过年龄
对它们进行排序的记录。这可能使用排序
?
阵列([0] =>数组
([名] =>约拿
[年龄] => 27)
[1] =>排列
([名] =>比安卡
[年龄] => 32)
)
解决方案
如何
$ ARR =阵列(
0 =>阵列(
'名'=> 约拿,
'年龄'=> '27',
)
1 =>阵列(
'名'=> 比安卡,
'年龄'=> '32',
)
2 =>阵列(
'名'=> 约拿,
'年龄'=> '25',
)
3 =>阵列(
'名'=> 比安卡,
'年龄'=> '35',
)
);
功能补偿($ A,$ B){
如果($ A [名称] == $ B ['名']){
返回$ a ['年龄'] - $ B ['年龄'];
}
返回STRCMP($ A ['名'],$ B ['名']);
}usort($改编,'补偿');
的print_r($ ARR);
输出:
阵列
(
[0] =>排列
(
[名] =>比安卡
[年龄] => 32
) [1] =>排列
(
[名] =>比安卡
[年龄] => 35
) [2] =>排列
(
[名] =>约拿
[年龄] => 25
) [3] =>排列
(
[名] =>约拿
[年龄] => 27
))
Is it possible to use usort
to sort multiple fields in a multidimensional array? For example I want to sort name
alphabetically and then from those records I want to sort them by age
. Is this possible using sort
?
Array ( [0] => Array
( [name] => Jonah
[age] => 27 )
[1] => Array
( [name] => Bianca
[age] => 32 )
)
解决方案
How about:
$arr = Array (
0 => Array (
'name' => 'Jonah',
'age' => '27',
),
1 => Array (
'name' => 'Bianca',
'age' => '32',
),
2 => Array (
'name' => 'Jonah',
'age' => '25',
),
3 => Array (
'name' => 'Bianca',
'age' => '35',
),
);
function comp($a, $b) {
if ($a['name'] == $b['name']) {
return $a['age'] - $b['age'];
}
return strcmp($a['name'], $b['name']);
}
usort($arr, 'comp');
print_r($arr);
output:
Array
(
[0] => Array
(
[name] => Bianca
[age] => 32
)
[1] => Array
(
[name] => Bianca
[age] => 35
)
[2] => Array
(
[name] => Jonah
[age] => 25
)
[3] => Array
(
[name] => Jonah
[age] => 27
)
)
这篇关于PHP usort排序多个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文