2016-03-09 2 views
3

Попытка повторить пару значений из ответа CURL JSON, чтобы я мог поместить их в цикл foreach, но я могу использовать только одно индексированные значения.Получить определенные значения из массива ответов CURL JSON php

$request = curl_init($api); // initiate curl object 
curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response 
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) 
//curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment if you get no gateway response and are using HTTPS 
curl_setopt($request, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($request, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/x-www-form-urlencoded" 
)); 

$response = (string)curl_exec($request); // execute curl fetch and store results in $response 

curl_close($request); // close curl object 

$result = json_decode($response, true); // true turns it into an array 
echo 'First Name: ' . $result['first_name'] . '<br />'; // why doesnt this work 
echo 'Last Name: ' . $result[0]['last_name'] . '<br />'; // yet i can return the first value 

выход Пример массива

Array 
(
    [0] => Array 
     (
      [id] => 34761 
      [first_name] => A 
      [last_name] => Bailes 
      [clinic] => 
      [phone] => 7409923279 
      [fax] => 7409926740 
      [address1] => 507 Mulberry Heights Rd 
      [address2] => 
      [city] => Pomeroy 
      [subdivision] => OH 
      [country_code] => 
      [postal_code] => 45769-9573 
      [timezone] => Array 
       (
        [timezone_type] => 3 
        [timezone] => America/New_York 
       ) 

      [state] => OH 
     ) 
) 

У меня есть JSON декодирования установлен верно для вывода массива

$result = json_decode($response, true); // true turns it into an array 

, но когда я пытаюсь повторить «first_name» значения он просто возвращает пустой.

echo 'First Name: ' . $result['first_name'] . '<br />'; // why doesnt this work 

Но я могу вернуть индексированный значение

echo 'First Name: ' . $result[0]['first_name'] . '<br />'; 

Что я делаю неправильно здесь?

+1

'$ Результат [0] [ 'first_name'] 'является правильным. См. Структуру массива. В противном случае вы можете установить '$ result = json_decode ($ response, true) [0]' (на php> = 5.5) – fusion3k

+1

В чем проблема. вы получаете значение '$ result [0] ['first_name']' right? '$ result' - массив с 1 элементом, в котором ваш ассоциативный массив. – LightNight

ответ

2

Ваш массив результатов вложен в 2 глубины. $result - массив массивов. Итак:

$result[0]['first_name'] 

или

foreach ($result as $r) { 
    echo $r['first_name']; 
} 
+0

Извините, я не понимаю. $ result [0] ['first_name'] работает, но получит только один результат, первый в индексе. Мне нужно выводить все результаты в цикле foreach, но я хочу только конкретный, например. значения first_name. Когда я использую его в цикле foreach foreach ($ result as $ r) { echo $ r ['first_name']; } Я получаю пустые результаты (ничего не отображается). – markbarabus

+0

Это странно. «Foreach» должен определенно работать. Я предлагаю запустить его через отладчик и проверить значения. –

+0

Оказывается, это была неопределенная ошибка индекса, потому что раньше у меня был $ result ['first_name']. Это была моя проблема. foreach loop теперь работает. Благодарю. – markbarabus

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