首页 > 解决方案 > 如何在没有键的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 所做的那样。

感谢大家!

标签: phpjsoncsvoop

解决方案


要通过数组项的属性找出数组的索引,请使用array_column仅获取该列/属性的值,然后使用array_search查找索引。

<?php
$inputZip = 35004;

$index = array_search($inputZip, array_column($zipCodes, 'zipcode')); // 0

print_r($zipCodes[$index]); // the entire object

https://3v4l.org/TAXQq


推荐阅读