首页 > 解决方案 > 如何检查此 php 数组中所需的数据

问题描述

我有以下格式的回复。我正在使用laravel。我想检查是否存在 street_number 尽管它们存在index,如果是,只需打印long_name 类似的我想检查是否存在routetypes数组。如果是,则打印路线long_name等。

dd($dataArray);给出这个回应

array:3 [
  "html_attributions" => []
  "result" => array:15 [
    "address_components" => array:7 [
      0 => array:3 [
        "long_name" => "19"
        "short_name" => "19"
        "types" => array:1 [
          0 => "street_number"
        ]
      ]
      1 => array:3 [
        "long_name" => "Becket Street South"
        "short_name" => "Becket St S"
        "types" => array:1 [
          0 => "route"
        ]
      ]
      2 => array:3 [
        "long_name" => "senroy"
        "short_name" => "Slenroy"
        "types" => array:2 [
          0 => "locality"
          1 => "political"
        ]
      ]
]

我像这样循环

$newArray=[];
foreach($dataArray['result'] as $data){
//    check if street_number in array or not if yes push it value to new array
//same for other types as well

}

标签: phparrayslaravel

解决方案


你的 foreach 内部有问题:应该是这样的:

foreach($dataArray as $key=> $data){
    if (in_array('street_number',$data['types'])) {
        
    }
}

因为您的类型已经在foreach 内的$data中。所以你不需要再说 $key 了。

编辑1: 发现问题。删除isset($data[$key]),因为它总是错误的。因为 $key 返回 0,1,.... 但是 $data 键是这三个: 'long_name' , 'short_name' , 'types' 。您可以通过dd($key)

编辑 2: 在您最近更新问题后,您的 foreach 应该是这样的:

foreach($dataArray['result']['address_components'] as $data){
    if (in_array('street_number',$data['types'])) {
        dd('should be here');
    }
}

推荐阅读