在同一数组中查找数组中的键和 return 值

Finding key in array and return value in the same array

我有一个数组:

"city": [
{
 "kind": "qpxexpress#cityData",
 "code": "CHI",
 "name": "Chicago"
},
{
 "kind": "qpxexpress#cityData",
 "code": "LAX",
 "name": "Los Angeles"
},
{
 "kind": "qpxexpress#cityData",
 "code": "YMQ",
 "name": "Montreal"
},
{
 "kind": "qpxexpress#cityData",
 "code": "YOW",
 "name": "Ottawa"
},
{
 "kind": "qpxexpress#cityData",
 "code": "YVR",
 "name": "Vancouver"
}

]

完整路径为:array->trips->data->city 我想要做的是从数组中获取 "name",如果 "code" 与提供的代码匹配:

function getCity($string, $array) {
    foreach ($array as $place) {
        if (strstr($string, $place)) { // mine version
            echo "Match found"; 
            return true;
        }
    }
    echo "Not found!";
    return false;
}

这就是我得到的全部。我不知道如何继续。

你的"array"确实是一个数组,但是在JSON, and not a PHP-Array中。因此,您必须先对其进行解码:

$json = '[
    {
     "kind": "qpxexpress#cityData",
     "code": "YOW",
     "name": "Ottawa"
    },
    {
     "kind": "qpxexpress#cityData",
     "code": "YVR",
     "name": "Vancouver"
    }
]';

$array = json_decode($json, true);

请注意,您代码中的 "city": 前缀可能是 JSON 内部周围对象的遗留物(我还删除了一些条目,因为并非所有条目都是需要说明我的观点)。因此,为了仅解码必须删除的数组。

然后您可以像以前一样遍历数组:

function getNameByCodeFromArray($array, $code) {
    foreach ($array as $entry) {
        if ($entry['code'] == $code) {
            return $entry['name'];
        }
    }
}

然后调用函数:

echo getNameByCodeFromArray($array, 'YVR'); // Echoes "Vancouver"