循环使用FOREACH的多维数组

时间:2014-02-26 18:08:46

标签: php arrays multidimensional-array

我知道之前已经问过类似的问题,但我无法让解决方案适合我,因为我真的很难使用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>';
}

3 个答案:

答案 0 :(得分:1)

试试:

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

答案 1 :(得分:1)

你几乎拥有它:

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#']

答案 2 :(得分:1)

我认为多维数组是一个库。在库中,您可以使用不同的区域来隔离主题 - 例如数组的顶层。然后你有不同的书籍案例,对每个主题进行分类 - 比如数组的第二级。然后是一个不同的架子(让我们说作者) - 就像数组的第3级一样。这是一种存储和查找数据的非常简洁的方法。您的多维数组(来自您编写的内容)如下所示:

顶级:

#BOOKED#
#RESERVE#

第二级:(我个人并不理解为什么会出现这种情况)

0

第3级:

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'];
    }
}

考虑摆脱那个第二级 - 除非你的价值不仅仅是零值,否则似乎没有必要。