завдання
Необхідно дізнатися, чи містить масив певне значення.
Рішення
Використовуйте функцію 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.';
>
Зверніть увагу, що в процесі отримання перетвореного масиву безліч ключів з однаковим значенням стискаються в один елемент.