簡體   English   中英

PHP:在循環內使用Usort()

[英]PHP : using Usort() inside a Loop

我正在嘗試對多維數組進行排序。

我的數組中具有以下結構:

array
(
    [1] => stdClass Object
        (
            [events] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 1
                            [task] => task1
                            [date_task] => 2018-04-02
                            [start] => 8
                            [end] => 10
                        )

                    [1] => stdClass Object
                        (
                            [id] => 7
                            [task] => task 32
                            [date_task] => 2018-04-02
                            [start] => 10
                            [end] => 12
                        )
                )
        )
    [2] => stdClass Object
        (
           [events] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 4
                            [task] => task4
                            [date_task] => 2018-04-06
                            [start] => 11
                            [end] => 15
                        )
                    [1] => stdClass Object
                        (
                            [id] => 5
                            [task] => task5
                            [date_task] => 2018-04-06
                            [start] => 8
                            [end] => 10
                        )
                )
        )
)

如果我嘗試像這樣在循環FOR或FOREACH中使用Usort()函數:

for ($i = 1; $i <= count($MyArray); $i++) {
         usort($MyArray[$i]->events, function($a, $b) {
         return $b->start <=> $a->start;
     });
    }

我收到此錯誤:

usort()期望參數1為數組,給定字符串

我該如何解決這個問題?

1.嘗試在for()上使用foreach() for() (因為它負責索引本身)。

2.使用通過引用機制

像下面這樣:

foreach ($MyArray as &$MyArr) {
  foreach ($MyArr as &$MyAr) {
    if (is_array($MyAr)){
       usort($MyAr, function($a, $b) {
          return ($b->start <= $a->start) ? 1 : -1;
       });
    }
  }
}

print_r($MyArray);

輸出: -https : //eval.in/984958

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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