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