我试图在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
时,结果完全相同。
那么,这里可能出现什么问题?
答案 0 :(得分:1)
您正在尝试拨打未定义为someClass::sorterFunc
的{{1}},因为您正在使用myClass::sorterFunc
扩展someClass
。
myClass