Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 基于foreach的复杂多维数组处理_Php_Arrays_Multidimensional Array_Foreach - Fatal编程技术网

Php 基于foreach的复杂多维数组处理

Php 基于foreach的复杂多维数组处理,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我在处理这个数组时遇到了一个问题。我尝试了几种不同的方法,但没有一种是正确的,这是数组 Array ( [search] => Array ( [response] => Array ( [errors] => [number_of_hotels] => 1 of 1 ) [lr_rates] => Array ( [hotel] => Array ( [hote

我在处理这个数组时遇到了一个问题。我尝试了几种不同的方法,但没有一种是正确的,这是数组

Array ( 
  [search] => Array ( 
    [response] => Array ( 
      [errors] => 
      [number_of_hotels] => 1 of 1 
    ) 
    [lr_rates] => Array ( 
      [hotel] => Array  ( 
        [hotel_ref] => 3116 
        [hotel_currency] => [U] => USD 
        [hotel_rooms] => Array ( 
          [room] => Array ( 
            [ref] => 6382 
            [type] => 1 
            [type_description] => Standard 
            [sleeps] => 8 
            [rooms_available] => 
            [adults] => 8 
            [children] => 
            [breakfast] => false 
            [dinner] => false 
            [description] => 
            [alternate_description] => 
            [rack_rate] => 82.01 
            [date] => 19/08/201220/08/201221/08/2012
            [numeric_hotelcurrencyprice] => FullFullFull
            [formatted_date] => 19 August 201220 August 201221 August 2012 
            [price] => FullFullFull
            [hotelcurrencyprice] => FullFullFull 
            [numeric_price] => FullFullFull
            [requested_currency] => GBPGBPGBP 
            [numeric_hotelcurrencyprice] => FullFullFull
            [available_online] => false 
            [minimum_nights] => 1 
            [bed_type] => 
            [cancellation_policy] => 
            [cancellation_days] => 
            [cancellation_hours] => 
            [room_terms] => 
          )
          [room] => Array ( 
            [ref] => 6382 
            [type] => 1 
            [type_description] => Standard 
            [sleeps] => 8 
            [rooms_available] => 
            [adults] => 8 
            [children] => 
            [breakfast] => false 
            [dinner] => false 
            [description] => 
            [alternate_description] => 
            [rack_rate] => 82.01 
            [date] => 19/08/201220/08/201221/08/2012
            [numeric_hotelcurrencyprice] => FullFullFull
            [formatted_date] => 19 August 201220 August 201221 August 2012 
            [price] => FullFullFull
            [hotelcurrencyprice] => FullFullFull 
            [numeric_price] => FullFullFull
            [requested_currency] => GBPGBPGBP 
            [numeric_hotelcurrencyprice] => FullFullFull
            [available_online] => false 
            [minimum_nights] => 1 
            [bed_type] => 
            [cancellation_policy] => 
            [cancellation_days] => 
            [cancellation_hours] => 
            [room_terms] => 
          )
        ) 
        [cancellation_type] => First Night Stay Chargeable 
        [cancellation_policy] => 2 Days Prior to Arrival 

        [CityTax] => Array ( 
          [TypeName] => 
          [Value] => 
          [OptedIn] => 
          [IsCityTaxArea] => 
        )
      )
    )
  ) 
)
好的,我需要遍历数组并创建一个循环,这样每个房间的实例都会重复这个过程,然后我需要从房间数组中提取数据,并用它填充MySQL中的行。将有多个房间实例。这是我到目前为止的代码,它打印房间数组中的名称和值,但它只得到一个房间阵列我可以做些什么来设置它来读取所有的房间阵列,我也认为这对于每个房间来说都太多了,但似乎无法向下遍历[“”][“”][“”]。。。 或者只使用关联名称

foreach($arr['search'] as $lr_rates) {
        foreach($lr_rates['hotel'] as $hotel) {
                   foreach($hotel['room'] as  $field => $value){
                     print $field;print $value;
                          }

             }
      }
值得一提的是,这些数组中的值总是波动的

foreach($arr as $search) {
    foreach($search as $lr_rates) {
        foreach($lr_rates as $hotel) {
                 foreach($hotel as $hotel_rooms) {
                      print_r($hotel_rooms['room'])
                  }
            }
     }
}
编辑:这些大量的
foreach
循环只是为了让您了解如何到达
房间
。当然,你也可以直接得到结果

print_r($arr['search']['lr_rates']['hotel']['hotel']['hotel']['room'])

编辑:这些大量的
foreach
循环只是为了让您了解如何到达
房间
。当然,你也可以直接得到结果


print_r($arr['search']['lr_rates']['hotel']['hotel']['hotel']['room'])

您不必在脚本中使用太多foreach循环,因为它看起来不太好。这是一个关联数组。
只需使用关联数组的键即可访问该数组。你可以在上面找到很多脚本。

你不必在脚本中使用太多foreach循环,因为它看起来不太好。这是一个关联数组。
只需使用关联数组的键即可访问该数组。用谷歌搜索一下。你可以在上面找到很多脚本。

Wow-你有没有可能解决这个问题?我对水平滚动条一无所获。。。但这是另一个级别:)请修复阵列。。。我以前很喜欢“waterslide”代码,但这是一个经典的例子,说明它为什么不好。只需将自己放在$array[a][b][c]…[room]上,然后从那里使用一个foreach,或者可以使用两个foreach;一个直到你到达$key='room',在$key中,再做一次foreach;例如:foreach($key=>value的数组){if($key=='room){foreach($key=>value的数组){code here}…lonut Flavius Pogacian是的,我认为这是正确的方法,但我似乎无法在不抛出错误的情况下让它工作。我必须尝试使用if条件和as$key=>$value的一些不同组合,还有一些as$parentarray尚未使其工作。哇,有没有可能修复该缩进e?我不反对水平滚动条…但这是在另一个层面:)请修复数组…我过去喜欢“waterslide”代码,但这是一个典型的例子,为什么它不好。只需将自己定位在$array[a][b][c]…[room]然后使用一个foreach,或者你可以使用两个foreach;一个直到你到达$key='room',在这个$key中,做另一个foreach;例如:foreach($key=>array$value){if($key='room){foreach($key=>value2){code here}…lonut Flavius Pogacian是的,我认为这是正确的方法,但我似乎无法在不抛出错误的情况下让它工作。我必须尝试一些不同的组合,如$key=>$value和if条件,还有一些as$parentarray。我还没有让它工作,尽管我尝试过使用一个foreach和关联名称现在可以在平面数组中工作,但在这种情况下似乎不行。是的,我尝试过使用一个foreach和关联名称现在可以在平面数组中工作,但在这种情况下似乎不行,只输出一个房间数组,在执行此操作之前抛出错误,所以只输出房间数组一个,并在执行此操作之前抛出错误