Я проанализировал и расшифровал 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_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>";
}
Попробуйте этот код:
<?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);
Вы можете построить массив дат и затем отфильтровать его array_unique.
<?php
$array = ['foo', 'foo', 'bar', 'baz'];
$unique = array_unique($array);
var_export($unique);
Выход:
array (
0 => 'foo',
2 => 'bar',
3 => 'baz',
)