Содержимое
Для того что бы определить ключ массива зная его значения, можно использовать как минимум три варианта решения.
- Мы можем использовать известную уже нам ф-ю array_search. Ранее в статье про удалении элемента из массива ее мы уже использовали.
- В цикле, пройтись по всем элементам массива и сравнив значения, определить ключ.
- Использовать ф-ю «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 и искать может уже есть что-то готовое. А сейчас, при существования гитхаба и ему подобных, скорость разработки можно увеличить еще на порядок больше. Удачи!