簡體   English   中英

使用FOREACH循環多維數組

[英]Looping Multidimensional Arrays with FOREACH

我知道之前也曾問過類似的問題,但是我無法為我找到可行的解決方案,因為我真的很難為多維數組使用foreach循環,但仍無法完全解決。

我的數組$ bookings的結構如下:

Array ( [#BOOKED#] => Array ( [0] => Array ( [id] => 1 [user_id] => 2 [class_id] => 3 [class_date] => 2014-03-03 00:00:00 [manual_booking] => 1 [booked_date] => 2014-02-26 00:00:00 [cancelled_date] => )
              [#RESERVE#] => Array ( [0] => Array ( [id] => 2 [user_id] => 2 [class_id] => 2 [class_date] => 2014-03-04 00:00:00 [manual_booking] => 1 [booked_date] => 0000-00-00 00:00:00 [cancelled_date] => )

這是我嘗試過的,我要去哪里錯了? 我們將不勝感激任何幫助,以及以真正基本的術語解釋foreach循環多維數組的教程的任何鏈接,我發現的所有內容都缺少詳細信息,也沒有清楚的示例說明每個參數的作用。 非常感謝!

foreach ($bookings as $status => $record) {
    echo $record['user_id'];
    echo '<br>';
}

只需嘗試:

foreach ($bookings as $status => $records) {
    foreach ($records as $record) {
        echo $record['user_id'];
        echo '<br>';
    }
}

您幾乎擁有它:

foreach ($bookings as $record) {
    echo $record['#BOOKED#']['user_id'];
    echo '<br>';
    echo $record['#RESERVE#']['user_id'];
    echo '<br>';
}

或根據要顯示的方式分為兩個單獨的foreach

foreach ($bookings['#BOOKED#'] as $record) {
    echo $record['user_id'];
    echo '<br>';
}
foreach ($bookings['#RESERVE#'] as $record) {
    echo $record['user_id'];
    echo '<br>';
}

根據您使用它的頻率以及是否有其他類似的數組,您可以使用一個函數,例如,只需傳入$bookings['#RESERVE#']

我認為多維數組是一個庫。 在庫中,您可以使用不同的區域來分隔主題-例如數組的頂層。 然后,您將擁有不同的書箱,這些書箱對每個主題進行了分類-例如數組的第二級。 然后是一個不同的架子(比如說作者)-像數組的第三層。 這是一種非常整潔的方式來存儲和查找數據。 您的多維數組(從您編寫的內容來看)如下所示:

頂層:

#BOOKED#
#RESERVE#

2級:(我個人不了解為何存在此級別)

0

第三級:

id
user_id
class_id
class_date
manual_booking
booked_date
cancelled_date

要分隔數組的頂層,可以使用如下條件語句:

foreach ($bookings as $status => $record) {
    if($status=="#BOOKED#") {
        // i.e. do something for booked array
        echo $record[0]['user_id'];
    } else {
        // i.e. do something for reserved array
        echo $record[0]['user_id'];
    }
}

考慮一下擺脫第二級-除非您那里的零值以上,否則似乎沒有必要。

暫無
暫無

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

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