[英]uksort does not work - Callback not executed or exception
我試圖在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);
}
}
因此,我在文檔或任何示例中找不到的呼叫都起作用。 當我跳過uksort
並使用call_user_func
,結果完全相同。
那么,這里可能出什么問題了?
您正在嘗試調用someClass::sorterFunc
,因為它實際上是myClass::sorterFunc
因為您正在使用myClass
擴展someClass
。
uksort($theArray, "myClass::sorterFunc");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.