1

我想使用给定的键对二维关联数组进行排序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

4

2 回答 2

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);
}
于 2014-02-04T21:20:48.540 回答
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

于 2014-02-04T21:26:47.100 回答