簡體   English   中英

uksort不起作用-回調未執行或異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM