如何根据值对数组进行排序


How to sort an array based on a value

$arr['a']['studentname'] = "john";
$arr['b']['studentname'] = "stefen";
$arr['c']['studentname'] = "alex";

是否可以使用用户定义的函数进行排序:

usort( $arr )

uasort( $arr )

uksort( $arr )

所以根据我需要传递的值,数组应该被排序!预期输出:

如果当前值则

Array
(
    [c] => Array
        (
            [studentname] => alex
        )
    [a] => Array
        (
            [studentname] => john
        )
    [b] => Array
        (
            [studentname] => stefen
        )
)  

如果当前值则

 Array
    (
[b] => Array
            (
                [studentname] => stefen
            )
 [a] => Array
            (
                [studentname] => john
            )
        [c] => Array
            (
                [studentname] => alex
            )
    )  

提前致谢

如果我理解了这个问题,你可以使用一个简单的字符串比较回调:

$arr['a']['studentname'] = "john";
$arr['b']['studentname'] = "stefen";
$arr['c']['studentname'] = "alex";
// A-Z
uasort($arr, function($a, $b) {
  return strcmp($a['studentname'], $b['studentname']);
});
print_r($arr);
// Z-A
uasort($arr, function($a, $b) {
  return strcmp($b['studentname'], $a['studentname']);
});
print_r($arr);

试试这个:
对于 PHP 版本> 5.3:

$arr['a']['studentname'] = "john";
$arr['b']['studentname'] = "stefen";
$arr['c']['studentname'] = "alex";
uasort($arr, function($a, $b) {
    return strcmp($a['studentname'], $b['studentname']);
});

对于 PHP 版本 <5.3:

$arr['a']['studentname'] = "john";
$arr['b']['studentname'] = "stefen";
$arr['c']['studentname'] = "alex";
function sort_by($a, $b) {
    return strcmp($a['studentname'], $b['studentname']);
}
uasort($arr, 'sort_by');