Мне нужно использовать цикл foreach на JSON в PHP, но я хочу только вернуть уникальные значения

Я проанализировал и расшифровал 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>";
}

Прямо сейчас, это возвращает все даты. Тем не менее, существует много повторяющихся дат, и я хочу только вернуть уникальные даты (без дубликатов). Есть ли способ сделать это?

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

Демо онлайн

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

Вы можете построить массив дат и затем отфильтровать его array_unique.

<?php

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

var_export($unique);

Выход:

array (
0 => 'foo',
2 => 'bar',
3 => 'baz',
)
-1
По вопросам рекламы [email protected]