uksort不起作用 - 回调未执行或异常

时间:2015-12-18 21:07:44

标签: php arrays sorting

我试图在PHP 5.5中使用uksort按键对数组进行排序。这不起作用。抛出异常,指定的类无效或没有任何反应:

namespace some\name\space

class myClass extends someClass {
   public function someFunction {
       $theArray = array(
           "key1" => "value1",
           "key2" => "value2",
           ...
           "keyN" => "valueN"
       );

       // Exception "Fatal Error: Class name must be a valid object or a string"
       uksort($theArray, array($this, "sorterFunc"));
       uksort($theArray, array("someClass", "sorterFunc"));
       uksort($theArray, array("some\name\space\someClass", "sorterFunc"));
       uksort($theArray, "self::sorterFunc");
       uksort($theArray, "some\name\space\someClass::sorterFunc");

       // No effect. No logging from sorterFunc and 
       // key/value order stays the same.
       uksort($theArray, "sorterFunc");
       uksort($theArray, "someClass::sorterFunc");
   }

   public static function sorterFunc($a, $b) {
       myLogger->info("sorterFunc called");
       return $this->CompareASomehowToB($a, $b);
   }
}

因此,我在docu或任何示例中找不到任何调用。当我跳过uksort并使用call_user_func时,结果完全相同。

那么,这里可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您正在尝试拨打未定义为someClass::sorterFunc的{​​{1}},因为您正在使用myClass::sorterFunc扩展someClass

myClass