2016-07-01 57 views
0

我已經解析並將json解碼爲一個php文件。 JSON的是類似這樣的格式:我需要在php中使用一個json的foreach循環,但我只想返回唯一的值

{"name":"John Doe", "records":[{"sample": "sample","fields":{"date":"Sample Date","Sample Field":"Sample value", "id": "sampleid"}} 

我有很多的是在該文件類似於此的記錄。我一直在使用foreach循環來返回所有date字段。循環看起來像這樣:

$records = $records_json['records']; 
foreach($records as $record) { 
     echo "<option>" . $record['fields']['date'] . "</option>"; 
} 

現在,這是返回所有的日期。但是,有很多重複的日期,我只想返回唯一的日期(不重複)。有沒有辦法做到這一點?

+0

你能重複的'date'您例如JSON結構添加一些更多的記錄? – RomanPerekhrest

+0

這個鏈接是有用的http://stackoverflow.com/questions/10214531/how-to-remove-empty-values-from-multidimensional-array-in-php –

回答

0

您可以使用一個數組存儲日期,並根據此數組中的值檢查新日期以查看「新」日期是否存在,如果它不是唯一日期並且應該是添加到數組中。

$records = $records_json['records']; 
$uniques = array(): 
foreach($records as $record) { 
    if (!in_array($record['fields']['date'], $uniques)) { 
     $uniques[] = $record['fields']['date']; 
    } 
} 
foreach ($uniques as $unique) { 
    echo "<option>" . $unique . "</option>"; 
} 
0

試試這個代碼:

<?php 
$records_json = '{"name":"John Doe", "records":[{"sample": "sample","fields":{"date":"Sample Date","Sample Field":"Sample value", "id": "sampleid"}}]}'; 
$arr = json_decode($records_json,TRUE); 
$records = $arr['records']; 
foreach($records as $record) { 
     echo $record['fields']['date'] ; 
} 
?> 
-1

您可以構建一個日期數組,然後用array_unique過濾。

<?php 

$array = ['foo', 'foo', 'bar', 'baz']; 
$unique = array_unique($array); 

var_export($unique); 

輸出:

array (
    0 => 'foo', 
    2 => 'bar', 
    3 => 'baz', 
) 
+0

數組是多維的 –

+0

這就是爲什麼我建議在構建的答案在使用array_unique之前的日期數組。 – Progrock

0

Demo online

<?php 

$json = '{"name":"John Doe", "records":[{"sample": "sample","fields":{"date":"Sample Date","Sample Field":"Sample value", "id": "sampleid"}}]}'; 

$json = json_decode($json , true); 
$dates = []; 

foreach($json['records'] as $record) { 
    $date = $record['fields']['date']; 
    if(!isset($dates[$date])) 
     $dates[]= $date; 
} 

var_dump($dates); 
相關問題