[英]Filter a multidimensional array in PHP
我有包含我的预订的数组:
$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
说明了客户在哪几天和在哪个房间。 如果我有多条线路,客户会更衣室。 对于我给出的日期,我需要获取预订,其中第一个日期对应于我给出的日期,进入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_);
但这会将所有结果返回给我...
请你帮助我好吗 ?
谢谢。
您认为$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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.