1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
usort完全按原樣傳遞數(shù)組中的元素。即在這種情況下,您的數(shù)組包含對(duì)象- 因此您需要對(duì)對(duì)象的屬性進(jìn)行比較,而不是作為數(shù)組中的元素進(jìn)行比較。
而不是像這樣將項(xiàng)目作為數(shù)組元素進(jìn)行比較:
return $item2['release_date'] <=> $item1['release_date']);
...您的函數(shù)應(yīng)該像這樣檢查對(duì)象屬性:
usort($showDirector, function ($item1, $item2) {
/* Check the release_date property of the objects passed in */
return $item2->release_date <=> $item1->release_date;
});
此外,您還嘗試在錯(cuò)誤的位置對(duì)數(shù)組進(jìn)行排序 - 每次找到導(dǎo)演時(shí),您都會(huì)對(duì)單個(gè)數(shù)組進(jìn)行排序(并且只有一個(gè)元素,因此沒(méi)有任何變化)。
你需要:
將所有必需的導(dǎo)演項(xiàng)添加到單獨(dú)的數(shù)組中進(jìn)行排序
當(dāng)您有所有要排序的項(xiàng)目時(shí),您可以對(duì)該數(shù)組進(jìn)行排序
然后您可以循環(huán)遍歷這個(gè)排序數(shù)組來(lái)處理結(jié)果,例如顯示它們。
請(qǐng)參閱下面的代碼 - 對(duì)步驟進(jìn)行了注釋,以便您可以了解需要執(zhí)行的操作:
$data = file_get_contents($url); // put the contents of the file into a variable
$director = json_decode($data); // decode the JSON feed
/* 1. Create an array with the items you want to sort */
$directors_to_sort = array();
foreach ($director->crew as $showDirector) {
if ($showDirector->department == 'Directing') {
$directors_to_sort[] = $showDirector;
}
}
/* 2. Now sort those items
note, we compare the object properties instead of trying to use them as arrays */
usort($directors_to_sort, function ($item1, $item2) {
return $item2->release_date <=> $item1->release_date;
});
/* 3. Loop through the sorted array to display them */
foreach ($directors_to_sort as $director_to_display){
echo $director_to_display->release_date . ' / ' . $director_to_display->title . '<br>';
}
- 1 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)