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

sort 関数を呼び出し可能な方法で指定する必要があります。

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

タイプ callable は PHP 5.4 より前には存在しませんでしたが、メソッドの参照は同じように機能します。

于 2013-06-15T08:29:42.803 に答える