Вы можете использовать фильтр, но он заканчивается ужасным кусочком кода
$isAllNumeric = count(array_filter($arr, "is_numeric")) === count($arr)
Использование пользовательской функции делает ее немного лучше, но все же не идеальной
$isAllNumeric = count(array_filter($arr, function($x){return !is_numeric($x);})) === 0
Но если бы вы использовали пользовательские функции, array_reduce работала бы, но у нее все еще были некоторые ошибки.
$isAllNumeric = array_reduce($arr,
function($x, $y){ return $x && is_numeric($y); },
true);
Недостатки в том, что он не сломается, когда найдет, что хочет, поэтому приведенные выше функциональные предложения не очень эффективны. Вам нужно написать такую функцию:
function array_find(array $array, $callback){
foreach ($array as $x){ //using iteration as PHP fails at recursion
if ( call_user_func($callback, array($x)) ){
return $x;
}
}
return false;
}
И пользуйся вот так
$isAllNumeric = array_find($arr, function($x){return !is_numeric($x);})) !== false;