Php 检查数组中的任何数字是否不是整数
我制作了一个表格,你可以用它发送数字,例如 12345678910 然后我编写了一个PHP代码,它将在数组中获取这些数字&循环,计算有多少数组项,然后进行计算 我使用is_numeric检查数组是否只包含int。 但由于某种原因,它并没有真正起作用Php 检查数组中的任何数字是否不是整数,php,arrays,Php,Arrays,我制作了一个表格,你可以用它发送数字,例如 12345678910 然后我编写了一个PHP代码,它将在数组中获取这些数字&循环,计算有多少数组项,然后进行计算 我使用is_numeric检查数组是否只包含int。 但由于某种原因,它并没有真正起作用 <?php $total = null; $number = $_POST['number']; $numbers = explode(" ", $number); foreach($numbers as $number) { $total =
<?php
$total = null;
$number = $_POST['number'];
$numbers = explode(" ", $number);
foreach($numbers as $number) {
$total = $total + $number;
}
$notnumber = '<center>You must enter a number</center>';
$empty = '<center>The field is empty.</center>';
if ($numbers == is_numeric($numbers) && $total != null) {
$avg = $total / $number;
echo '<center>Avarge is: <b>'.$avg.'</b></center>';
} else if ($_POST['number'] == "") {
echo $empty;
} else if ($numbers != is_numeric($numbers)) {
echo $notnumber;
}
?>
这是表格
<form action="index.php" method="post">
<input type="text" name="number" class="input"><br /><br />
<input type="submit" value="Calculate results">
</form>
发生了什么:
当我输入数字时,它将回显错误“$notnumbers”,但它们是数字。
我做错了什么
谢谢。这是不正确的:
$numbers==是数字($numbers)
替代解决方案:如果将
0
计算为无效数字,则可以尝试此操作
$number = $_POST['number'];
$numbers = explode(" ", $number);
$total = 0;
foreach($numbers as &$number) {
// covert value to integer
// any non-numerics become 0
$number = (int) $number;
$total += $number;
}
现在,您不必担心检查是否为数字
或是否为整数
,因为它们都是整数。您只需检查0
值即可
额外提示:
标记在HTML中也不推荐使用。应使用CSS显示居中文本。如果($numbers==是数字($numbers)…则不正确 使用 更好的功能是 请试试这个,不要用你的
//$_POST['number'] = '1 2 3 4 5 6 7 8 9 10';
$notnumber = '<center>You must enter a number</center>';
$empty = '<center>The field is empty.</center>';
if(!isset($_POST['number']) || strlen($_POST['number']) <= 0){
echo $empty;
}
else{
if( !preg_match('/^([1-9]{1})([0-9]*)(\s)([0-9]+)/', $_POST['number']) ){
echo $notnumber;
}else{
$total = null;
$number = $_POST['number'];
$numbers = explode(" ", $number);
//remove after test
echo "<pre>";
print_r($numbers);
echo "</pre>";
//end remove
$total = array_sum($numbers);
//count(array) = number of elements inside $array
$avg = $total / count($numbers);
echo '<center>Avarge is: <b>'.$avg.'</b></center>';
}
}
/$\u POST['number']='1234567910';
$notnumber='您必须输入一个数字';
$empty='字段为空';
如果(!isset($_POST['number'])| | strlen($_POST['number'])试试这个,我可以解决一些代码问题
由于某种原因,它似乎根本不会影响代码。将数字更改为$number,它就起作用了。$number只是您用于计算平均值的用户输入!!!这不正确
//$_POST['number'] = '1 2 3 4 5 6 7 8 9 10';
$notnumber = '<center>You must enter a number</center>';
$empty = '<center>The field is empty.</center>';
if(!isset($_POST['number']) || strlen($_POST['number']) <= 0){
echo $empty;
}
else{
if( !preg_match('/^([1-9]{1})([0-9]*)(\s)([0-9]+)/', $_POST['number']) ){
echo $notnumber;
}else{
$total = null;
$number = $_POST['number'];
$numbers = explode(" ", $number);
//remove after test
echo "<pre>";
print_r($numbers);
echo "</pre>";
//end remove
$total = array_sum($numbers);
//count(array) = number of elements inside $array
$avg = $total / count($numbers);
echo '<center>Avarge is: <b>'.$avg.'</b></center>';
}
}
<?php
$total = NULL;
$number = @$_POST['number'];
$numbers = explode(" ", $number);
$Num=0;
foreach($numbers as $number) {
$total = $total + $number;
$Num++;
}
$notnumber = '<center>You must enter a number</center>';
$empty = '<center>The field is empty.</center>';
if (is_array($numbers) && $total != NULL) {
$avg = $total / $Num;
echo '<center>Avarge is: <b>'.$avg.'</b></center>';
} else if (!isset($_POST['number'])) {
echo $empty;
} else if (!is_numeric($number)) {
echo $notnumber;
}