2

我正在尝试usort()在 PHP 中使用该函数。我不确定如何调用比较函数。下面是我的代码。我试过$this->comparator了,但没有帮助。comparator如果是一个不需要访问类的成员变量的函数,这将很容易。

class A { 
   $p1    // non-associative array 
   $p2    // non-associative array
   public function comparator($a, $b)
   {
       // the usual comparison stuff
       if ($this->p1[$a] == $this->p2[$b])
            return 0; 
       else ($this->p1[$a] < $this->p2[$b])
            return 1; 
       else
            return -1;
   }

   public function sorting()
   {
      // after some code
      $some_array = array(..); 
      usort($some_array, "comparator")    // <--- ERROR here: does not recognize comparator
   }
}
4

1 回答 1

7

您需要以可调用的方式指定排序函数:

usort($some_array, array($this, "comparator"));

尽管可调用类型在 PHP 5.4 之前不存在,但引用方法的工作方式相同。

于 2013-06-15T08:29:42.803 回答