2016-01-12 1 views
0

У меня есть массив:ключ Поиск в массиве и возвращаемого значения в том же массиве

"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-> данных-> город Что я хочу чтобы сделать, это получить «имя» из массива, если «код» совпадает с кодом, который предоставляется:

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

Вместо 'возврата true',' возвращение $ место [ 'имя' ] ' – venkatKA

+2

где вы получили этот массив, это строка json? – RomanPerekhrest

ответ

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" 
+0

Получил это. Большое спасибо – xampper

Смежные вопросы