php - 如何在没有键的php对象中定位数组
问题描述
我有一个来自 The Zip Code Database Project 的邮政编码数据库,它以 .csv 文件的形式出现。我将它转换为 json 并且每个数组都没有键,它们看起来像这样:
[
{
"zipcode": 35004,
"state abbreviation": "AL",
"latitude": 33.606379,
"longitude": -86.50249,
"city": "Moody",
"state": "Alabama"
}
]
我已经弄清楚如何搜索所有数组并找到匹配的邮政编码,但我不知道如何使搜索返回有关它找到它的数组的数据。
我可以这样搜索:
$filename = './assets/data/zips.json';
$data = file_get_contents($filename);
$zipCodes = json_decode($data);
$inputZip = 55555;
foreach ($zipCodes as $location) {
if ($inputZip == $location->zipcode) {
echo "Success";
}
}
谁能告诉我如何使用此搜索(或更好的主意)将与搜索的邮政编码关联的纬度和经度存储到两个变量中?我几乎把整个周末都浪费在这上面了,所以非常感谢任何和所有的帮助。
此外,我使用原始 csv 文件执行此功能没有问题,我只是无法达到我对 json 所做的那样。
感谢大家!
解决方案
要通过数组项的属性找出数组的索引,请使用array_column仅获取该列/属性的值,然后使用array_search查找索引。
<?php
$inputZip = 35004;
$index = array_search($inputZip, array_column($zipCodes, 'zipcode')); // 0
print_r($zipCodes[$index]); // the entire object
推荐阅读
- javascript - 我们如何删除 keyup 上的 customValidity 消息?
- java - liquibase 中的自动增量
- javascript - 带有滚动条的动态表
- javascript - 验证 div 内动态生成的输入
- android - 发现名称冲突的 getter:isFocusable
- powershell - 在添加新条目和覆盖现有条目时合并两个 CSV 文件
- algorithm - if-else 逻辑简化
- python - 如何在for循环中创建一个数组?
- android - 是否有任何用于 android 内核的 dm-default-key 模块的公共实现?
- django - 我的观点一遍又一遍地把我带到同一个页面