Щоб визначити ключ масиву, знаючи його значення, можна скористатися як мінімум трьома варіантами рішення:
- Можна використати вже відому нам функцію 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 у пошуках готових рішень. А зараз, за наявності GitHub і подібних платформ, швидкість розробки можна збільшити ще в рази. Успіхів!
