Как в php найти ключ в массиве по значению

Как в php найти ключ в массиве по значению

Для того что бы определить ключ массива зная его значения, можно использовать как минимум три варианта решения.

  1. Мы можем использовать известную уже нам ф-ю array_search. Ранее в статье про удалении элемента из массива ее мы уже использовали.
  2. В цикле, пройтись по всем элементам массива и сравнив значения, определить ключ.
  3. Использовать ф-ю «array_walk», имитируя вариант из пункта 2.

Исходные данные:

<?php $array = [
    10 => 'Lorem',
    12 => 'Ipsum',
    15 => 'simply',
    20 => 'dummy',
    33 => 'text',
];

Выше массив значений, где ключи и значения уникальны. Подчеркиваю, что значения уникальны. Если в ваших примерах будут встречаться одинаковые значения, то будут возвращены ключи, первых значений одинаковых элементов.

Пример 1

В нем мы используем PHP ф-ю array_search, и ищем ключ, значение у которого «simply»:

<?php
//Example 1
$search_value = 'simply';
echo var_dump(array_search($search_value, $array));
echo "\n";

Результатом будет - int(15)

Пример 2

Используем цикл «foreach» для обхода всех элементов массива, и условный оператор «if» для сравнения значений.

<?php //Example 2
$search_value = 'Ipsum';
foreach( $array as $key => $value )
{
    if($search_value == $value)
    {
        var_dump($key);
        echo "\n";
        break;
    }
}

Для значения «Ipsum», ответом будет ключ «int(12)»

Пример 3

Пожалуй самый длинный и самый странный из вариантов, это использование функции «array_walk» и передачи по ссылке найденного ключа «$search_key» через use:

<?php
//Example 3
$search_value = 'Lorem';
$search_key = NULL;
array_walk($array, function($value, $key, $search_value) use(&$search_key){
    if($search_value == $value)
    {
        $search_key = $key;
    }
}, $search_value);
var_dump($search_key);

Результатом будет или NULL в случае если ключ не был найден, или «int(10)» в случае найденного значения «Lorem».

Какой итог этого всего. Не морочьте себе голову, а используйте то что уже есть в PHP встроенное, а это готовую ф-ю «array_search».

Раньше, на заре своей карьеры PHP программиста, я часто писал подобные велосипеды как из примеров 2 и 3. Со временем, я поумнел, и начал заглядывать в документацию PHP и искать может уже есть что-то готовое. А сейчас, при существования гитхаба и ему подобных, скорость разработки можно увеличить еще на порядок больше. Удачи!

Как в php найти ключ в массиве по значению
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *