Задать вопрос
I7uoHep
@I7uoHep

Как найти массив внутри многомерного массива, зная ключ в нем?

Есть огромный набор данных в виде вложенных ассоциативных массивов. JSON, из которого он получен, выглядит вот так.
{
	"result": {
		"status": 1,
		"items_game_url": "http://media.steampowered.com/apps/730/scripts/items/items_game.f2627ba745a08c761743db0abc042dec75d6810b.txt",
		"qualities": {
			"normal": 0,
			"genuine": 1,
		},
		"originNames": [
			{
				"origin": 0,
				"name": "Timed Drop"
			},
			{
				"origin": 1,
				"name": "Achievement"
			},
			{
				"origin": 2,
				"name": "Purchased"
			}
                ],
		"items": [
			{
				"name": "weapon_deagle",
				"defindex": 1,
				"item_class": "weapon_deagle",
				"item_type_name": "#CSGO_Type_Pistol",
				"item_name": "#SFUI_WPNHUD_DesertEagle",
				"item_description": "#CSGO_Item_Desc_DesertEagle",
				"proper_name": false,
				"item_quality": 0,
				"image_inventory": "econ/weapons/base_weapons/weapon_deagle",
				"min_ilevel": 1,
				"max_ilevel": 1,
				"image_url": "http://media.steampowered.com/apps/730/icons/econ/weapons/base_weapons/weapon_deagle.29e8f0d7d0be5e737d4f663ee8b394b5c9e00bdd.png",
				"image_url_large": "",
				"craft_class": "weapon",
				"craft_material_type": "weapon",
				"capabilities": {
					"paintable": true,
					"nameable": true,
					"can_sticker": true,
					"can_stattrack_swap": true
				},
				"attributes": [

				]
				
			},


У меня есть значение defindex одного из элементов массива items. Как мне получить остальные поля того же элемента массива?
  • Вопрос задан
  • 284 просмотра
Подписаться 2 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 3
@summer_rain
По идее, вы должны будете написать рекурсивную функцию. :)
Ответ написан
Комментировать
@Zex0n
Если я правильно понял задачу:
<?
$jsonString = <<<DATA
{
    "result": { ...... }
}
DATA;
define("SEARCH_STRING", 2);
$jsonArray = json_decode($jsonString, true);
foreach ($jsonArray['result']['items'] as $key => $value) {
    if ($value['defindex'] == SEARCH_STRING) $need_key = $key;
}
if ($jsonArray['result']['items'][$need_key])
    print_r ($jsonArray['result']['items'][$need_key]);

?>
Ответ написан
Комментировать
azverin
@azverin
Посмотрите в сторону Json Path.
Реализация под PHP: https://github.com/jayway/JsonPath
Описание: goessner.net/articles/JsonPath
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы