I have this array containing my bookings:
$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
and the client_name
. days
contains the schedule of the client in the hotel. Each array in this days
array explains which days and in which room the client is. If I have more than one line, the client change room. For a date I give, I need to get the bookings where into the days array
the first date correspond to the date I give.
2016-11-25
. I need to get:
$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_);
But it returns me all the results into the bookings...
Could you please help me ?
Thanks.
What do you think is $day['day_id'][0]
?
It's the first symbol of $day['day_id']
as latter is a string. So, nothing will be exploded by ,
in $day['day_id'][0]
. And solution is to remove [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;
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.