2013-11-14 2 views
0

Еще раз попал в дорожный блок .. Мне нужно закодировать из моего json-файла диапазон значений, и все вне этого диапазона будет равно нулю. Любые предложения относительно того, как я мог бы это сделать?json_encode range from array

Например: если значение json> 100 затем возвращает значение в новый массив, если значение json < 100 возвращает null в тот же новый массив.

Вот мой код:

$url = 'http://magicseaweed.com/api/API_KEY/forecast/?spot_id=3952'; 
$JSON = file_get_contents($url); 

$data = json_decode($JSON,true); 

foreach ($data as $record) { 
    $array[] = array($record['localTimestamp']*1000, $record['wind']['direction']); 
} 

echo json_encode($array); 

Заранее спасибо за вашу помощь!

+1

Что вы имеете в виду 'если JSON> 100 '? '$ JSON' - это массив, это не единственное значение, которое вы можете сравнить с 100. – Barmar

+0

Я имею в виду, если значения в моем сыром файле JSON находятся выше руды ниже 100, либо возвращают значение или null, и помещают их в мой массив. – MacD

+0

. означает значение '$ record ['wind'] ['direction']'? – Barmar

ответ

2

Используйте условное выражение:

foreach ($data as $record) { 
    $val = $record['wind']['direction']; 
    $array[] = array($record['localTimestamp']*1000, $val > 100 ? $val : null); 
} 
+0

Вот и все! Спасибо, Бармар! – MacD

0

Может

if ($record['wind']['direction'] > 100) 

??

0

Вы просто должны быть в состоянии добавить дополнительную строку кода в цикле Еогеасп как:

foreach ($data as $record) { 
    $value = array($record['localTimestamp']*1000, $record['wind']['direction']); 
    if($value > 100){ 
     $value = NULL; 
    } 
    $array[] = $value; 
} 

echo json_encode($array); 
+0

Вы не можете сравнить массив с 100. – Barmar