亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在沒有鍵的情況下在php對象中定位數組

如何在沒有鍵的情況下在php對象中定位數組

PHP
收到一只叮咚 2024-01-19 17:14:20
我有一個來自郵政編碼數據庫項目的郵政編碼數據庫,該數據庫以 .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";        }    }誰能告訴我如何使用此搜索(或一個更好的想法)將與搜索的郵政編碼相關的緯度和經度存儲到兩個變量上?我幾乎整個周末都浪費了這個,所以所有的幫助都非常感謝。另外,我沒有使用RAW CSV文件執行此功能的問題,但我無法像JSON那樣獲得。感謝大家!
查看完整描述

3 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

要通過數組項目的屬性找出數組的索引,請使用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


查看完整回答
反對 回復 2024-01-19
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

要獲取由于必須使用的某些參數而過濾的數組的鍵,您可以array_keys使用array_filter。


例如


$array = [1,2,1,1,1,2,2,1,2,1];


$out = array_filter($array,function($v) {

    return $v == 2;

});

print_r(array_keys($out));

輸出


Array

(

    [0] => 1

    [1] => 5

    [2] => 6

    [3] => 8

)

在PHP沙箱中嘗試以上示例


匹配您的實際數據結構。


$json = '[{"zipcode": 35004,"state abbreviation": "AL","latitude": 33.606379,"longitude": -86.50249,"city": "Moody","state": "Alabama"},{"zipcode": 35004,"state abbreviation": "AL","latitude": 33.606379,"longitude": -86.50249,"city": "Moody","state": "Alabama"},{"zipcode": 35005,"state abbreviation": "AL","latitude": 33.606579,"longitude": -86.50649,"city": "Moody","state": "Alabama"}]';

$array = json_decode($json);

$out = array_filter($array, function($v) use ($inputZip) {

    return $v->zipcode == $inputZip; // for the below output $inputZip=35004 

});

print_r(array_keys($out));

輸出


Array

(

    [0] => 0

    [1] => 1

)

在PHP沙箱中嘗試示例



查看完整回答
反對 回復 2024-01-19
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

根據您的代碼:


foreach ($zipCodes as $index => $location) { // index is a key

    if ($inputZip == $location->zipcode) {

        echo "Index is ".$index;

        break;

    }

}

var_dump($zipCodes[$index]);

我應該注意,看來您在做錯了什么,因為您不想像這樣存儲數據并一直循環循環。


查看完整回答
反對 回復 2024-01-19
  • 3 回答
  • 0 關注
  • 177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號