我有这个包含我的预订的数组:
$bookings[] = array(
'booking_id' => '1',
'client_firstname' => 'Gareth',
'days' => array(
array('day_id' => '2016-11-23,2016-11-24', 'room_id' => '2'),
array('day_id' => '2016-11-25', 'room_id' => '4'),
array('day_id' => '2016-11-26,2016-11-27,2016-11-28', 'room_id' => '2'),
)
);
$bookings[] = array(
'booking_id' => '2',
'client_firstname' => 'James',
'days' => array(
array('day_id' => '2016-11-25,2016-11-26,2016-11-27,2016-11-28', 'room_id' => '5')
)
);
$bookings[] = array(
'booking_id' => '2',
'client_firstname' => 'Marco',
'days' => array(
array('day_id' => '2016-11-24', 'room_id' => '5')
)
);
booking_id
和client_name
。days
包含酒店客户的时间表。此days
数组中的每个数组都说明客户端在哪些日期以及在哪个房间。如果我有多条线路,客户会更换房间。对于我给出的日期,我需要预订days array
第一个日期对应于我给出的日期。
2016-11-25
。我需要得到:
$bookings[] = array(
'booking_id' => '1',
'client_firstname' => 'Gareth',
'days' => array(
array('day_id' => '2016-11-25', 'room_id' => '4')
)
);
$bookings[] = array(
'booking_id' => '2',
'client_firstname' => 'James',
'days' => array(
array('day_id' => '2016-11-25,2016-11-26,2016-11-27,2016-11-28', 'room_id' => '5')
)
);
$day_value = '2016-11-23';
$bookings_ = array();
foreach($bookings as $b){
foreach($b['days'] as $day){
if(in_array($day_value,explode(',',$day['day_id'][0]))){
$bookings_[] = $b;
}
}
}
print_r($bookings_);
但它将所有结果都归还给预订......
你能帮我吗?
感谢。
答案 0 :(得分:2)
您认为$day['day_id'][0]
是什么?
它是$day['day_id']
的第一个符号,因为后者是一个字符串。因此,,
中$day['day_id'][0]
不会爆炸任何内容。解决方案是删除[0]
:
foreach($bookings as $b){
foreach($b['days'] as $day){
if(in_array($day_value,explode(',',$day['day_id']))){
// this string added:
$b['days'] = $day;
$bookings_[] = $b;
// btw, if your `$b['days']` has several elements
// and in a couple of them there's a required date
// then `$b` will be added to `$bookings_` several
// times, so probably you need `break`
// break;
}
}
}