Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中过滤多维数组_Php_Arrays - Fatal编程技术网

在PHP中过滤多维数组

在PHP中过滤多维数组,php,arrays,Php,Arrays,我有一个包含我的预订的数组: $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', 'r

我有一个包含我的预订的数组:

$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\u id
    client\u name
  • 数组
    days
    包含客户在酒店的日程安排。此
    days
    数组中的每个数组都解释了客户端所在的日期和房间。如果我有一条以上的线路,客户可以换房间

愿望 对于我给出的日期,我需要在
days数组中获得预订,其中第一个日期对应于我给出的日期


例子
  • 我给出的日期是2016年11月25日
  • 我需要得到:

    $bookings[]=数组(
    '预订id'=>'1',
    “客户名”=>“Gareth”,
    “天”=>数组(
    数组('day\u id'=>'2016-11-25','room\u id'=>'4')
    )
    );
    $bookings[]=数组(
    '预订id'=>'2',
    “客户名”=>“詹姆斯”,
    “天”=>数组(
    阵列('day_id'=>'2016-11-252016-11-262016-11-272016-11-28','room_id'=>'5')
    )
    );


我所尝试的 但它会将所有结果返回到预订中

你能帮帮我吗


谢谢。

你认为什么是
$day['day\u id'][0]

它是
$day['day\u id']
的第一个符号,因为后者是一个字符串。因此,在
$day['day\u 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;
        }
    }
}

$day['day\u id'][0]
中删除
[0]
,您的示例代码对我有效。不,如果我删除[0],我将拥有days数组的所有数组,而我只需要第二个数组。因此,您希望添加以下行:
$b['days']=$day$预订量[]=b美元;中断对吗?不,如果我删除
[0]
,我将拥有
数组的所有数组,而我只需要第二个数组。第二个什么?检查我在问题中编写的所需示例。告诉我你明白
$day['day\u id'][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;
        }
    }
}