簡體   English   中英

使用復雜數組時,PHP 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.

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