php - 如何检查此 php 数组中所需的数据
问题描述
我有以下格式的回复。我正在使用laravel。我想检查是否存在 street_number 尽管它们存在index
,如果是,只需打印long_name
类似的我想检查是否存在route
此types
数组。如果是,则打印路线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
}
解决方案
你的 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');
}
}
推荐阅读
- javascript - 使用 django 和 AJAX 在填充字段中提交表单后,“此字段为必填项”
- javascript - 节点 JS Dialogflow 错误:INVALID_ARGUMENT:未设置输入文本。?
- c - 来自 Ua_Variant 的 C 类型转换
- swift - 如何使用“空”谓词创建 NSCompoundPredicate
- firebase - 将 contains() 与 firebase 规则一起使用
- mysql - SQL 查询根据条件返回额外的列
- java - 将复杂的 JSON 解析为列表
- javascript - 如何确保 Web 应用程序使用具有正确 URL 的 firebase 函数模拟器进行测试
- python - Python程序将由特定发布者名称过滤的元组与进程名称,pid,路径和启动参数写入txt文件
- wagtail - 基于现有数据库制作 Wagtail 网站的一般方法