Необходимо установить местоположение элементов в массиве, которые удовлетворяют определенным требованиям.
Используйте цикл 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 не имеет явного превосходства над кодом пользовательского
уровня.
См. также
Документацию по функции array_filter() на http://www.php.net/array-filter.