Могу ли я получить конкретное значение JSON по идентификатору?
Я хотел бы, чтобы соответствующая дата typeId: 11 выводилась из следующего JSON. Порядок typeId всегда разный, поэтому не всегда получается, например, всегда обращаться ко второму значению.
{
"page": 1,
"totalsCount": 1,
"isLastPage": true,
"lastPageNumber": 1,
"firstOnPage": 1,
"lastOnPage": 1,
"itemsPerPage": 50,
"entries": [
{
"id": 60132,
"statusName": "GIT",
"dates": [
{
"orderId": 60132,
"typeId": 7,
"date": "2021-06-03T00:00:00+02:00"
},
{
"orderId": 60132,
"typeId": 11,
"date": "2021-05-28T00:00:00+02:00"
},
{
"orderId": 60132,
"typeId": 16,
"date": "2021-05-27T20:20:28+02:00"
},
{
"orderId": 60132,
"typeId": 2,
"date": "2021-05-27T20:19:21+02:00"
},
{
"orderId": 60132,
"typeId": 4,
"date": "2021-06-03T15:16:14+02:00"
}
]
}
]
}
С моим подходом пока я не получаю никакого результата:
$json = file_get_contents($orders);
$arr = json_decode($orders);
foreach($arr->entries as $order => $value) {
echo '<th scope="row">' . $value->dates->[typeId='11'].date . '</th>';
}
В чем моя ошибка?
-
0Вы не можете получить значения из такого массива или объекта. Вам нужно будет перебирать даты, чтобы найти подходящую недвижимость. aynber
-
0Что такое $ value? Я бы подумал о рассмотрении некоторых ранее заданных вопросов о том, как анализировать или перебирать массив JSON. Jason Is My Name
-
0Извините, я добавил информацию к вопросу. Leff

3 ответа
Вы могли бы использовать array_map()
:
<?php
$arr = json_decode($json, true);
$result = array_filter(
array_map(
function ($record) {if($record['typeId'] == 11) return $record['date'];}, $arr['dates']
)
);
использовать array_filter()
для удаления пустых значений из набора результатов.
рабочая демонстрация
РЕДАКТИРОВАТЬ
С обновленной информацией json вы можете использовать:
$obj = json_decode($json);
foreach($obj->entries[0]->dates as $order => $value) {
if($value->typeId == 11) echo '<th scope="row">' . $value->date . '</th>';
}
рабочая демонстрация
-
0Выглядит неплохо, но на самом деле у меня это не работает .. Мой код: 3v4l.org/AkIcC
-
0обновлено, исправлено
Посколькуdates
- это массив, который нужно перебирать и отфильтровывать нужные элементы с помощьюtypeId
.
Что-то вроде этого:
dates.filter(({typeId}) => typeId === 11).shift().date
-
0Что ж ... это, очевидно, вопрос, связанный с PHP, и поэтому это не ответ PHP.
Для такой ситуации я обычно пишу такую простую функцию:
function getDate(array $dates, $typeId) {
foreach ($dates as $date) {
if ($date['typeId'] === $typeId) {
return $date;
}
}
return null;
}
Другие вопросы
- как выполнить итерацию во вложенном массиве1 ответ
Здравствуйте, у меня такой структурированный JSON, и мне нужно перебрать элементы[ { "name": "About You", "questions": [ { "questionText": "What is your surname?", "answers": [ { "t...
- Проблемы с установкой sylius / product-bundle в мой проект Symfony 5.3 с помощью composer1 ответ
Я пытаюсь разработать проект, но у меня возникают проблемы с установкой Sylius с помощью composer. Вот мойcomposer.json{ "type": "project", "license": "proprietary", "minimum-stability": "dev", "prefer-stable": tru...
- Фрейм данных Pandas из данных URL json - KeyError не может индексировать или фильтровать по ключам2 ответ
import pandas as pd url = "https://api.reserve.albertaparks.ca/api/public/campgrounds/62/availability?campingType=campsite" \ "&arrivalDt=01-Aug-2021&departureDt=13-Aug-2021&unitSize=40&siteType=VEH" result = pd.read_json(url) print(result) df = pd.DataFra...
- Функция клавиатуры работает только один раз для первой буквы ввода2 ответ
У меня есть текстовый ввод, где пользователь вводит желаемое имя страницы<input type='text' id='pageName' name='PageName' class='form-control pageName'> Я пытаюсь использовать функцию keyup для запуска Ajax, чтобы проверить, существует ли страница, однако при вводе чего-то вродеindex Ajax от...
- Выпадающее меню автозаполнения на основе значения другого поля в mysql php1 ответ
У меня было два раскрывающихся меню: одно - со многими кастами, а другое - с сообществом. Если я выберу касту, в раскрывающемся поле сообщества должно быть показано эквивалентное сообщество. Как мне это сделать?
- Отображение из определенной точки в Microsoft Graph API, Python1 ответ
Я уже пару дней бьюсь головой о стену и не могу придумать ответа. Внутри Microsoft Graph API, когда вы вызываете определенный тип данных электронной почты, он отправляет JSON со значением, считанным на верхнем уровне. { "@ odata.context": "https://graph.microsoft.com/v1.0...
- ajax дважды загружает данные из базы данных с помощью laravel php1 ответ
привет, я пытаюсь загрузить данные из базы данных с помощью ajax. но данные загружаются дважды на страницу html.<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> $('button').click(function(){ $.ajax({ ...
- Python - чтение JSON - TypeError: строковые индексы должны быть целыми числами1 ответ
Я пытаюсь прочитать json, который я сам создал в скрипте. Когда я пытаюсь получить доступ к одному из его «атрибутов» после прочтения, появляется следующая ошибка: Traceback (most recent call last): File "index.py", line 74, in <module> print(json_leitura['items']) ...

"Завидую тестировщикам: все хотят с ними дружить."