Поиск в json с помощью php

Вопрос: В основном, что я пытаюсь сделать здесь, это поиск ключа, который в основном представляет собой числовую версию id, используя ключ, который я пытаюсь найти правильный идентификатор строки в огромном массиве json, но я столкнулся

Вопрос:<?php $string= file_get_contents(«http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json»); $array = json_decode($string, true); foreach($array [«key»] as $key) { if($key == ‘412’) { echo $key[‘id’]; } } ?>

В основном, что я пытаюсь сделать здесь, это поиск ключа, который в основном представляет собой числовую версию id, используя ключ, который я пытаюсь найти правильный идентификатор строки в огромном массиве json, но я столкнулся с некоторыми проблемами поскольку я не уверен, как это сделать.

В http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json, если вы ищете 412 (дважды во второй поиск по CTRL f), вы увидите «key»:»412″ хорошо Я хочу, чтобы идентификатор был введенным из него, который в этом случае является “Thresh” («id»:»Thresh») (то, что я хочу вернуть, это просто Thresh). Надеюсь, я был максимально ясен. благодаря

Лучший ответ:

Вам нужно зациклировать [‘data’] не [«key»], который находится внутри [‘data’].

$string= file_get_contents(«http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json»); $array = json_decode($string, true); foreach($array[‘data’] as $data) { if($data[‘key’] == ‘412’) { echo $data[‘id’]; } } Ответ №1

Вы можете попробовать этот код. Если вы столкнетесь с каким-либо логическим вопросом, я объясню вам это.

$string = file_get_contents(«http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json»); $jsonArray = json_decode($string, true); foreach($jsonArray [«data»] as $key) { if($key[‘key’] == ‘412’) { echo $key[‘id’]; } } Ответ №2

У вас есть дополнительный уровень гнездования, который вам нужно учитывать. $array[‘data’] сам является ассоциативным массивом с такими ключами, как Aatrox. Каждый из этих ключей является ассоциативным массивом внутри него. Он находится внутри этого вложенного массива, который вы должны посмотреть.

foreach($array[‘data’] as $element_name => $element_data) { $key = $element_data[‘key’]; if ($key === ‘412’) { echo $element_data[‘id’]; }; }

Если вы собираетесь работать с набором данных, подобным этому, вы можете подумать о сохранении карты значений key значениях id, так как это похоже на то, что данные структурированы для быстрого поиска по id.

Оцените статью
Добавить комментарий