Поиск по значению в массиве

185
13 января 2019, 22:30

Есть массив:

Array
(
    [0] => Array
        (
            [ID] => 40
            [NAME] => Пример 1
        )
    [1] => Array
        (
            [ID] => 39
            [NAME] => Пример 2
        )
    [2] => Array
        (
            [ID] => 38
            [NAME] => Пример 3
        )
)

Необходимо найти элемент массива по ID и и вывести NAME. Каким образом это лучше реализовать?

Answer 1

Если операция поиска одноразовая, то можно использовать варианты поиска, приведенные в других ответах.
Если же вам нужно обращаться ко множеству элементам по ID, то лучше перевести массив к виду ID => name, чего можно добиться простым использованием

$data = array_column($array, 'name', 'id');
print $data[39];

в случае, если у вас там будет не только name и и другие данные, можно дополнительно использовать array_combine:

$data = array_combine(array_column($array, 'id'), $array);

тогда фактически ключи будут заменены на значения ID.

Answer 2

$array исходный массив, $searchId ID который ищите

foreach ($array as $item) {
    if ($item['ID'] == $searchId) {
        echo $item['NAME'];
        break;
    }
}
Answer 3

К примеру можно сделать вот так:

$array = array(
    array(
        'id' => 40,
        'name' => 'Пример 1'
    ),
    array(
        'id' => 39,
        'name' => 'Пример 2'
    ),
    array(
        'id' => 38,
        'name' => 'Пример 3'
    )
);
echo $array[array_search(39, array_column($array, 'id'))]['name']; //Пример 2
READ ALSO
Laravel связь моделей

Laravel связь моделей

Имеется проблема

172
Проблема кодировки на Apache на Windows2012

Проблема кодировки на Apache на Windows2012

Сломал голову, помогите пожалуйста решить проблемуУ меня есть небольшой скрипт, который выполняет php exec команду с каталогами на сетевом ресурсе

204
yii2 Авторизация по нескольким бд

yii2 Авторизация по нескольким бд

Нужно что бы при авторизации были три поля username, password, id_companyИ при авторизации id_company это был префикс базы данных

162
Как передать через AJAX одновременно изображение и несколько переменных?

Как передать через AJAX одновременно изображение и несколько переменных?

тестирую на PHP загружается ли изображение на сервер:

162