我有一个数组:
"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 我想要做的是从数组中获取“名称”,如果“代码”与提供的代码匹配:
function getCity($string, $array) {
foreach ($array as $place) {
if (strstr($string, $place)) { // mine version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
}
这就是我所得到的。我不知道如何继续。
答案 0 :(得分:1)
"数组"你拥有的确是一个数组,但在JSON,而不是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"