![](/img/trans.png)
[英]Case Insensitively Sort a Multidimensional PHP Array using array_multisort()
[英]PHP array_multisort does not sort properly while using complex array
我有一個這樣的多維數組:
Array
(
[thursday] => Array
(
[0] => Array
(
[title] => Movie2
[time] => 15.30
[venue] => VenueA
)
[1] => Array
(
[title] => Movie1
[time] => 13.00
[venue] => VenueB
)
)
)
我想使用array_multisort按時間對它進行排序,當我像這樣使用它時,這很好:
foreach ($movies['thursday'] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies['thursday']);
unset($time);
但是以這種方式,我必須在一周的每一天重復這段代碼。 所以我想用:
foreach ($movies as $movie) {
foreach ($movie as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movie);
unset($time);
}
但是現在該數組仍未排序。 據我所知,后一段代碼的功能與前一段代碼相同。 還是我犯了一個巨大的概念錯誤?
您在運行PHP4還是5? 在4中,foreach循環不會像5中那樣創建引用。這可能就是第二個代碼示例無法正常工作的原因。 如果是這種情況,您可以將其轉換為for循環...
for ($i = 0; $i < count($movies); $i++) {
foreach ($movies[$i] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies[$i]);
unset($time);
}
找出答案,使用while
技巧。
while($elements = each($movies)) {
foreach($movies[$elements['key']] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies[$elements['key']]);
unset($time);
}
我遇到了類似的問題。 顯然,某些較舊的array_multisort版本無法正確使用混合值。 我一直在尋找確切的錯誤和版本,但是此刻我發現它不在我的位置。 如果找到它,我將對其進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.