我需要在php中的json上使用foreach循环,但我只想返回唯一的值

我需要在php中的json上使用foreach循环,但我只想返回唯一的值,php,json,multidimensional-array,unique-array,Php,Json,Multidimensional Array,Unique Array,我已经将json解析并解码为php文件。json的格式与此类似: {"name":"John Doe", "records":[{"sample": "sample","fields":{"date":"Sample Date","Sample Field":"Sample value", "id": "sampleid"}} 我在那个档案里有很多类似的记录。我一直在使用foreach循环返回所有date字段。循环看起来像: $records = $records_json['records'

我已经将json解析并解码为php文件。json的格式与此类似:

{"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>";
}
$records=$records\u json['records'];
foreach($记录为$记录){
回显“$record['fields']['date']”;
}

现在,这将返回所有日期。但是,有很多重复的日期,我只想返回唯一的日期(没有重复)。有没有办法做到这一点?

您可以使用一个数组来存储日期,并根据该数组中的值检查新日期,以查看“新”日期是否在其中,如果不是,则它是唯一的日期,应添加到数组中

$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>";
}
$records=$records\u json['records'];
$uniques=array():
foreach($记录为$记录){
if(!in_数组($record['fields']['date'],$uniques)){
$uniques[]=$record['fields']['date'];
}
}
foreach($uniques作为$unique){
回显“$unique.”;
}
尝试以下代码:

<?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'] ;
}
?>

您可以构建一个日期数组,然后使用进行过滤

 <?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);

您可以在示例json结构中添加更多重复的
日期记录吗?此链接非常有用。数组是多维的。这就是为什么我在回答中建议在使用数组之前构建一个日期数组。
array (
  0 => 'foo',
  2 => 'bar',
  3 => 'baz',
)
 <?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);