Найти значение родственного ключа в массиве php

Найти значение родственного ключа в массиве php

29.08.2012 08:36:09 Просмотров 48 Источник

У меня есть массив в PHP, вот фрагмент кода:

$locations = array(
    array(
        "id" => 202,
        "name" => "GXP Club - Fable"
    ),

    array (
        "id" => 204,
        "name" => "GXP Club - Gray"
    )
);

То, что я знаю (из GET) - это ID (202). То, что я хотел бы показать, это "Показаны результаты для " ( where $locations[?][id] = $_GET['id'] { echo $locations[?][name] } ) - если вы простите мне использование псевдокода.

Не уверен, какая функция лучше, или если мне нужно перебрать весь массив, чтобы найти это. Спасибо.

Изменить: для дальнейшего разъяснения. Мне нужно узнать [имя] с учетом [id]

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/12182575/find-value-of-sibling-key-in-php-array#comment16310093_12182575
Спасибо, это то, что я внедряю. Жаль, что это комментарий, а не ответ!
https://stackoverflow.com/questions/12182575/find-value-of-sibling-key-in-php-array#comment103254319_12182575
Да. @Майкл, пожалуйста, не публикуйте ответы в качестве комментариев. Все еще раздражает достаточно, чтобы заставить меня прокомментировать 7 лет спустя. Я бы поддержал тебя, изменив это сейчас.

Ответы - Найти значение родственного ключа в массиве php / Find value of sibling key in php array

Является ответом!
hjpotter92

29.08.2012 08:40:17

foreach( $locations as $arr ) {
    if($arr['id'] == $_GET['id']) {
        echo $arr['name'];
        break;
    }
}

Это должно сработать.

ernie

29.08.2012 08:42:16

В то время как цикл по массиву является решением проблемы, как описано, кажется более оптимальным изменить Ваш массив на $id=>$namekey-value, а не на именованные значения ключей, если это все данные в массиве, например:

$locations = array( '202' => 'GXP Club - Fable',
                    '204' => 'GXP Club - Gray',
             )

В качестве альтернативы, если есть больше данных, я бы переключился на вложенную структуру данных, например:

$locations = array( '202' => array( 'name' => 'GXP Club - Fable', 'prop2' =>$prop2, etc),      
                    '204' => array( 'name' => 'GXP Club - Gray', 'prop2' =>$prop2, etc),
             )

Это позволяет вам получать доступ к данным через ID (например$locations[$id]['name']), что, по-видимому, вы обычно хотите сделать.

https://stackoverflow.com/questions/12182575/find-value-of-sibling-key-in-php-array/12182676#comment16310073_12182676
Я ценю ваше понимание того, как массив должен быть правильно структурирован, но это объект JSON, поэтому он немного тупой.
ainokna

29.08.2012 08:53:43

Вы можете использовать array_map

miken32

20.11.2019 08:10:49

Делаем это при помощи PHP-встроенный массив функций* предотвращает foreach петли:

<?php
$locations = [["id"=>202, "name"=>"GXP Club - Fable"], ["id"=>204, "name"=>"GXP Club - Gray"]];

$col = array_search(array_column($locations, "id"), $_GET["id"]);
echo $locations[$col]["name"];

Или, используя другой метод:

<?php
$locations = [["id"=>202, "name"=>"GXP Club - Fable"], ["id"=>204, "name"=>"GXP Club - Gray"]];

$result = array_filter($locations, function($v){ return $v["id"] == $_GET["id"]; });
echo array_shift($result)["name"];

* Примечательно, array_column()был недоступен до PHP 5.5, выпущенного через 10 месяцев после того, как был задан этот вопрос!

Закрыть X