Есть ли функция для этого?
Например, если у меня есть массив, такой как 1,1,3,2,1,2,3,2,2,3,3,2,5,1 Функция должна возвращать true тогда и только тогда, когда все числа в массиве менее 5
if(max($yourArray) < 5) { //all values in array are less than 5 }
Вы можете использовать array_filter
для запуска команды над каждым аргументом и убедиться, что список пуст, например:
function greater_than_four($num) { return (int)$num > 4; } if( array_filter($list, "greater_than_four") ) { // INVALID } else { // VALID }
array_map
о котором все array_map
, здесь не так много. array_reduce
будет:
array_reduce($array, function ($v, $a) { return $v && $a < 5; }, true)
Но использование Mxl max
безусловно, лучше всего.
Почему вы не создаете свою собственную функцию?
function allunder5(yourarray) { foreach $yourarray as $yournumber { if ($yournumber > 5) { return false } } return true }
function checkArray(&$arr, $max){ foreach($arr as $e){ if($e>$max){ return false; } } return true; }
@Mchl уже дал вам самое сжатое и элегантное решение, но я потратил несколько минут, чтобы создать уродливое решение с одним слоем, и опубликую свое причудливое и хакерское решение как любопытство или пример предупреждения.
function arrayContainsValueOverLimit($arr, $limit) { return ! array_reduce( array_map( // Closure used with array_map function ($val) use (&$limit) { return $val <= $limit; }, // Values passed into array_map $arr ), // Closure used with array_reduce function ($r, $v) { return $r && $v; }, // Starting value for array_reduce true ); } var_dump( arrayContainsValueOverLimit( array(1,1,3,2,1,2,3,2,2,3,3,2,5,1), 3 ) );
Для получения дополнительной информации о закрытии PHP обратитесь к анонимным функциям в руководстве по PHP.