gee*_*guy 36 php arrays sorting usort multidimensional-array
我有一个如下数组:
Array ( [0] => Array ( 'name' => "Friday" 'weight' => 6 ) [1] => Array ( 'name' => "Monday" 'weight' => 2 ) )
我想获取该数组中的最后一个值('weight'),并使用它来对主数组元素进行排序.所以,在这个数组中,我想对它进行排序,以便'Monday'元素出现在'Friday'元素之前.
cod*_*ict 40
您可以使用usort
:
function cmp($a, $b) {
return $a['weight'] - $b['weight'];
}
usort($arr,"cmp");
Run Code Online (Sandbox Code Playgroud)
可以使用匿名函数完成.
此外,如果您的'weight'是一个字符串,请使用其他一个返回(请参阅注释掉的行):
<?php
$arr = array(
0 => array (
'name' => 'Friday',
'weight' => 6,
),
1 => array (
'name' => 'Monday',
'weight' => 2,
),
);
// sort by 'weight'
usort($arr, function($a, $b) { // anonymous function
// compare numbers only
return $a['weight'] - $b['weight'];
// compare numbers or strings
//return strcmp($a['weight'], $b['weight']);
// compare numbers or strings non-case-sensitive
//return strcmp(strtoupper($a['weight']), strtoupper($b['weight']));
});
var_export($arr);
/*
array (
0 => array (
'name' => 'Monday',
'weight' => 2,
),
1 => array (
'name' => 'Friday',
'weight' => 6,
),
)
*/
Run Code Online (Sandbox Code Playgroud)
您还可以使用匿名函数。
usort($items, function($a, $b) {
return $a['name'] > $b['name'];
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23496 次 |
最近记录: |