Лучший способ перебрать этот массив в php

#php #arrays #loops

#php #массивы #Циклы

Вопрос:

У меня есть вызов api для bitcoin, возвращающий этот aray при использовании print_r() , каков был бы наилучший способ перебрать его, чтобы я мог использовать данные для создания таблицы или диаграммы?

 [{"volume": 1E 1, "timestamp": 1301982430, "symbol": "mtgoxUSD", "price": 0.62}, 
{"volume": 1E 1, "timestamp": 1301982430, "symbol": "mtgoxUSD", "price": 0.62}, 
{"volume": 31, "timestamp": 1301981474, "symbol": "mtgoxUSD", "price": 0.64}, 
{"volume": 8.592, "timestamp": 1301981466, "symbol": "mtgoxUSD", "price": 0.6401}, 
{"volume": 10.89, "timestamp": 1301981466, "symbol": "mtgoxUSD", "price": 0.6401}, 
{"volume": 9.61, "timestamp": 1301981066, "symbol": "mtgoxUSD", "price": 0.641},
{"volume": 1E 1, "timestamp": 1301981058, "symbol": "mtgoxUSD", "price": 0.641}, 
{"volume": 21.654, "timestamp": 1301981058, "symbol": "mtgoxUSD", "price": 0.641},
{"volume": 2E 1, "timestamp": 1301980388, "symbol": "mtgoxUSD", "price": 0.6729}, 
{"volume": 1E 1, "timestamp": 1301980373, "symbol": "mtgoxUSD", "price": 0.641}]
  

Комментарии:

1. чувак, ты выводишь меня из себя своим массивом .. пожалуйста, постарайся сделать его более понятным — также не мог бы ты объяснить, какую сетку данных ты планируешь создать.

2. Я планирую создать график, используя Google charts api … чтобы люди могли понять тенденцию биткойна за последние 30 дней.

Ответ №1:

Вы могли бы сначала преобразовать эту строку JSON в PHP-массив с помощью json_decode() :

 $str = '[{"volume": 1E 1, "timestamp": 1301982430, "symbol": "mtgoxUSD", "price": 0.62}, {"volume": 1E 1, "timestamp": 1301982430, "symbol": "mtgoxUSD", "price": 0.62}, {"volume": 31, "timestamp": 1301981474, "symbol": "mtgoxUSD", "price": 0.64}, {"volume": 8.592, "timestamp": 1301981466, "symbol": "mtgoxUSD", "price": 0.6401}, {"volume": 10.89, "timestamp": 1301981466, "symbol": "mtgoxUSD", "price": 0.6401}, {"volume": 9.61, "timestamp": 1301981066, "symbol": "mtgoxUSD", "price": 0.641}, {"volume": 1E 1, "timestamp": 1301981058, "symbol": "mtgoxUSD", "price": 0.641}, {"volume": 21.654, "timestamp": 1301981058, "symbol": "mtgoxUSD", "price": 0.641}, {"volume": 2E 1, "timestamp": 1301980388, "symbol": "mtgoxUSD", "price": 0.6729}, {"volume": 1E 1, "timestamp": 1301980373, "symbol": "mtgoxUSD", "price": 0.641}]';
$data = json_decode($str);
  

И тогда самым простым способом перебора этих данных будет foreach цикл :

 foreach ($data as $item) {
    echo "{$item->volume} - {$item->timestamp} - {$item->symbol} - {$item->price} <br />";
}
  

Который даст вам что-то вроде этого :

 10 - 1301982430 - mtgoxUSD - 0.62
10 - 1301982430 - mtgoxUSD - 0.62
31 - 1301981474 - mtgoxUSD - 0.64
8.592 - 1301981466 - mtgoxUSD - 0.6401
10.89 - 1301981466 - mtgoxUSD - 0.6401
9.61 - 1301981066 - mtgoxUSD - 0.641
10 - 1301981058 - mtgoxUSD - 0.641
21.654 - 1301981058 - mtgoxUSD - 0.641
20 - 1301980388 - mtgoxUSD - 0.6729
10 - 1301980373 - mtgoxUSD - 0.641 
  

Ответ №2:

Массив выглядит как закодированный в формате json, вы должны декодировать его с помощью json_decode

 $array=json_decode($array,true);
  

и используйте цикл foreach для перебора массива

 foreach($array as $key => $value)
{
  echo $key." has the value ".$value;
}
  

Ответ №3:

расшифруйте его в обычный массив:

 $str = json_decode($string);