我知道之前已经问过类似的问题,但我无法让解决方案适合我,因为我真的很难使用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>';
}
答案 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'];
}
}
考虑摆脱那个第二级 - 除非你的价值不仅仅是零值,否则似乎没有必要。