Нахождение элементов, удовлетворяющих определенному критерию

Задача
Необходимо установить местоположение элементов в массиве, которые удовлетворяют определенным требованиям.

Решение
Используйте цикл foreach:

$movies = array(...);
foreach ($movies as $movie) {
if ($movie['box_office_gross'] < 5000000) { $flops[] = $movie; }
}

Или функцию array_filter():
$movies = array(...);
function flops($movie) {
return ($movie['box_office_gross'] < 5000000) ? 1 : 0;
}
$flops = array_filter($movies, 'flops');

Обсуждение
Цикл foreach прост – вы прокручиваете данные и добавляете в возвращаемый массив элементы, которые удовлетворяют вашему критерию.Если нужен только первый такой элемент, то используйте break для выхода из цикла:

foreach ($movies as $movie) {
if ($movie['box_office_gross'] > 200000000) { $blockbuster = $movie;
break; }
}

Можно также выйти прямо из функции:

function blockbuster($movies) {
foreach ($movies as $movie) {
if ($movie['box_office_gross'] > 200000000) { return $movie; }
}
}

Однако при использовании функции array_filter() сначала нужно создать функцию обратного вызова, которая возвращает true для значений, которые нужно сохранить, и false в противном случае.


После вызова функции array_filter() нужно, чтобы PHP обработал массив таким же образом, как он обрабатывался в операторе цикла foreach.

Из функции array_filter() невозможно выйти раньше времени, поэтому оператор foreach предоставляет большую гибкость и его проще понять. К тому же это один из немногих случаев, когда встроенная функция PHP не имеет явного превосходства над кодом пользовательского уровня.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы