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

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *