PHP函数没有';不能处理变量

PHP函数没有';不能处理变量,php,function,variables,sorting,Php,Function,Variables,Sorting,嗨,我有以下功能: foreach($array_1 as &$arr){ usort($arr,"cmp"); } function cmp($a, $b) { if ($a[2] == $b[2]) { return 0; } return ($a[2] < $b[2]) ? -1 : 1; } foreach($array\u 1 as&$arr){ usort($arr,“cmp”); } 功能cmp($a$b){ 如果($a[2]==$

嗨,我有以下功能:

foreach($array_1 as &$arr){
usort($arr,"cmp");
}

function cmp($a, $b) {
    if ($a[2] == $b[2]) {
    return 0;
    }
    return ($a[2] < $b[2]) ? -1 : 1;
}
foreach($array\u 1 as&$arr){
usort($arr,“cmp”);
}
功能cmp($a$b){
如果($a[2]==$b[2]){
返回0;
}
回报($a[2]<$b[2])?-1:1;
}
如果我这样做,它会工作,但如果我把一个变量,而不是2==2和一个数字,函数就不工作了。这是为什么?我如何解决?我希望能够更改数字,以便根据变量输入对数组进行排序

不起作用的代码是:

$type = 2;
foreach($array_1 as &$arr){
usort($arr,"cmp");
}

function cmp($a, $b) {
    if ($a[$type] == $b[$type]) {
    return 0;
    }
    return ($a[$type] < $b[$type]) ? -1 : 1;
}
$type=2;
foreach($array_1 as&$arr){
usort($arr,“cmp”);
}
功能cmp($a$b){
如果($a[$type]==b[$type]){
返回0;
}
返回($a[$type]<$b[$type])?-1:1;
}

对于PHP 5.3+,希望您应该使用它,解决方案很简单,使用闭包:

$index = 2;

foreach ($array_1 as &$arr) {
    usort($arr, function ($a, $b) use ($index) {
        return $a[$index] - $b[$index];
    });
}
对于PHP5.2-,可以使用
global
变量(yack!!)或类:

class Sort {

    protected $index;

    public function __construct($index) {
        $this->index = $index;
    }

    public function compare($a, $b) {
        return $a[$this->index] - $b[$this->index];
    }

}

$index = 2;

foreach ($array_1 as &$arr) {
    usort($arr, array(new Sort($index), 'compare'));
}

当它不起作用时,你能像现在这样显示它吗?好吧,给我们看看不起作用的代码。看看usort手册页的例子#4,它是5.2.17,所以也许你的第二个建议会有用哇,我把索引值改成了变量,它就起作用了!非常感谢你,我已经坚持了很长一段时间了!