Перевірка наявності елемента в масиві

завдання
Необхідно дізнатися, чи містить масив певне значення.

Рішення
Використовуйте функцію in_array ():
if (in_array ($ array, $ value)) // в масиві $ array є елемент зі значенням $ value
>
Обговорення
Використовуйте функцію in_array (), щоб перевірити, чи містить елемент масиву значення:

$ Book_collection = array ( 'Emma', 'Pride and Prejudice', 'Northhanger Abbey');
$ Book = 'Sense and Sensibility';
if (in_array ($ book_collection, $ book)) echo 'Own it.';
> Else echo 'Need it.';
>

За замовчуванням функція in_array () порівнює дані за допомогою оператора ==. Щоб провести перевірку з оператором суворого рівності ===, передайте функції in_array () значення true в якості третьої параметра:

$ Array = array (1, '2', 'three');
in_array (0, $ array); // true!
in_array (0, $ array, true); // false
in_array (1, $ array); // true
in_array (1, $ array, true); // true
in_array (2, $ array); // true
in_array (2, $ array, true); // false

У першій перевірці функція in_array (0, $ array) повертає true, оскільки для порівняння числа 0 з рядком three PHP призводить рядок three до цілого значення.


А так як рядок three не є числовий рядком, такий як 2, вона перетворюється в 0. Тому функція in_array () вважає, що значення збігаються.

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

Якщо функція in_array () багато разів застосовується до того ж самому масиву, можливо краще використовувати асоціативний масив, в якому ключами є елементи вихідного масиву. При використанні функції in_array () час пошуку змінюється за лінійним законом,
а в разі асоціативного масиву пошук займає однаковий час.

Якщо не можна створити асоціативний масив безпосередньо, а потрібно отримати його, конвертуючи звичайний масив з цілочисельними ключами, використовуйте для заміни ключів і значень масиву функцію array_flip ():

$ Book_collection = array ( 'Emma',
'Pride and Prejudice',
'Northhanger Abbey');
// перетворення з числового масиву в асоціативний
$ Book_collection = array_flip ($ book_collection);
$ Book = 'Sense and Sensibility'; if (isset ($ book_collection [$ book])) echo 'Own it.';
> Else echo 'Need it.';
>

Зверніть увагу, що в процесі отримання перетвореного масиву безліч ключів з однаковим значенням стискаються в один елемент.

Схожі статті