Dan*_*nko 4 php arrays validation isnumeric
我试图检测一个或多个变量是否包含数字.我尝试过几种不同的方法,但我还没有完全成功.
这是我尝试过的.
<?php
$one = '1';
$two = '2';
$a1 = '3';
$a2 = '4';
$a3 = '5';
$string_detecting_array = array();
array_push($string_detecting_array, $one,$two,$a1,$a2,$a3);
foreach ($string_detecting_array as $key) {
if (is_numeric($key)) {
echo 'Yes all elements in array are type integer.';
}
else {
echo "Not all elements in array were type integer.";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我没有成功使用这种方法.有任何想法吗?先感谢您!
首先,你的循环逻辑是错误的:你应该在达成判决之前处理数组中的所有项目.最短(但不是最明显)的方法是这样做
$allNumbers = $array == array_filter($array, 'is_numeric');
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为array_filter保留键并将数组与==检查元素计数,键和值进行比较(这里的值是基元,因此可以进行简单的比较).
一个更普通的解决方案
$allNumbers = true;
foreach ($array as $item) {
if (!is_numeric_($item)) {
$allNumbers = false;
break;
}
}
// now $allNumbers is either true or false
Run Code Online (Sandbox Code Playgroud)
关于过滤功能:如果你只想让人物0来9,你要使用ctype_digit,需要提醒的是,这将不允许在前面的负号.
is_numeric 将允许标志,但它也将允许浮点数和十六进制.
gettype在这种情况下将无法工作,因为您的数组包含数字字符串,而不是数字.
gettype如果要明确知道变量是否为数字,则可以使用.使用is_numeric不会尊重类型.
如果您打算使用is_numeric但想知道是否所有元素都是,请按以下步骤操作:
$all_numeric = true;
foreach ($string_detecting_array as $key) {
if (!(is_numeric($key))) {
$all_numeric = false;
break;
}
}
if ($all_numeric) {
echo 'Yes all elements in array are type integer.';
}
else {
echo "Not all elements in array were type integer.";
}
Run Code Online (Sandbox Code Playgroud)