我想使用uasort
按给定键对二维关联数组进行排序。
我试过了
function sortBy(&$arr, $key) {
$cmp = function($a, $b) {
global $key;
return $a[$key] < $b[$key] ? -1 :
$a[$key] == $b[$key] ? 0 : 1;
};
return uasort($arr, $cmp);
}
但$key
内$cmp
未定义。
答案 0 :(得分:4)
尝试使用此
function sortBy(&$arr, $key) {
$cmp = function($a, $b) use ($key) {
return $a[$key] < $b[$key] ? -1 :
$a[$key] == $b[$key] ? 0 : 1;
};
return uasort($arr, $cmp);
}
答案 1 :(得分:2)
这应解决问题
function sortBy(&$arr, $key) {
$cmp = function($a, $b) use($key) {
global $key;
return $a[$key] < $b[$key] ? -1 :
$a[$key] == $b[$key] ? 0 : 1;
};
return uasort($arr, $cmp);
}
请注意,我在嵌套函数的声明中添加了use($key)
。您可以在http://www.php.net/manual/en/functions.anonymous.php