我正在使用像这样的uasort函数:
uasort($entity_list, 'sortArray');
function sortArray($a, $b) {
if($a['fixed_column_name'] == $b['fixed_column_name']) {
return 0;
}
return ($a['fixed_column_name'] < $b['fixed_column_name']) ? -1 : 1;
}
我想将参数传递给sortArray函数,如下所示:
uasort($entity_list, 'sortArray($arg)');
function sortArray($a, $b, $arg) {
$larg = $arg;
if($a[$larg] == $b[$larg]) {
return 0;
}
return ($a[$larg] < $b[$larg]) ? -1 : 1;
}
答案 0 :(得分:5)
如果您使用的是PHP 5.3+(此时您真的应该这样做),您可以使用闭包:
uasort($entity_list, function ($a, $b) use ($arg) {
if ($a[$arg] == $b[$arg]) {
return 0;
}
return ($a[$arg] < $b[$arg]) ? -1 : 1;
});
否则,您将不得不使用global
变量(哦,不!)或类来解决相同的问题。
答案 1 :(得分:2)
你总是可以使用一个类:
$sorter = new Sorter($arg);
usort($entity_list, array($sorter, "sort")); //will use $sorter->sort as callback
class Sorter {
function __construct($arg) {
$this->arg = $arg;
}
function sort($a, $b) {
// sort using $a, $b and $this->arg
}
}
虽然^^
,闭包更好答案 2 :(得分:0)
使用PHP手册的usort()页面上的闭包查看Example#4。所有基本排序都可以使用相同的技术,包括uasort()