如何在 PHP 中添加两个变量而不出现 "Warning: A non-numeric value encountered in C:\xampp\htdocs\game\test.php on line 28 0" 错误
How to add two variables in PHP without getting "Warning: A non-numeric value encountered in C:\xampp\htdocs\game\test.php on line 28 0" error
$var1 = mysqli_real_escape_string($conn,$_POST['var1'])
$var2 = mysqli_real_escape_string($conn,$_POST['var2']);
$var3 = mysqli_real_escape_string($conn,$_POST['var3']);
$var4 = mysqli_real_escape_string($conn,$_POST['var4']);
$data = $var1*10+$var2*10+$var3*10+var4*10;
echo $data;
我明白了
"Warning: A non-numeric value encountered in
C:\xampp\htdocs\game\test.php on line 28"
每当我尝试 echo $data
.
时出错
我只会在其中一个输入字段留空时收到错误消息。
所以有人可以 告诉我一种方法 来使用 php
代码或添加变量的正确方法来修复此错误,这样我就不会收到错误吗?
所以你需要先检查你的变量是否存在
if(isset($var1) && isset($var2) && isset($var3) && isset($var4)) {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
此代码将首先检查您的变量是否已设置,这意味着您的变量是否具有值,然后将尝试进行数学运算,否则它将跳过这部分代码。
if($var1!=='' && $var2!=='' && $var3!=='' && $var4!=='') {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
如果您的变量已设置但为空,那么您需要进行第二次控制。
如果您的查询有可能 return 一个不同于数字的值,那么您可以使用 is_numeric 函数来确保您的变量都是数字。
if(is_numeric($var1) && is_numeric($var2) && is_numeric($var3) && is_numeric($var4)) {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
尝试此代码,因为它会检查 php 变量是否为数字
if(is_numeric($var1) && is_numeric($var2) && is_numeric($var3) && is_numeric($var4) && is_numeric($var5))
{
$data = $var1*10+$var2*10+$var3*10+var4*10;
echo $data;
}
else
echo "Sorry! We have encountered non-numeric variables."
首先你忘记了$var
后的分号。
其次,在您的 $data
中,您忘记将 var4
设为变量,$var4
。
您的代码:
假设 $var1
到 $var4
是数字。
<?php
$var1 = 1;
$var2 = 2;
$var3 = 3;
$var4 = 4;
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
echo $data; // Outcome: 100.
?>
要检查您的变量是否为 整数 ,您可以简单地执行以下操作:
<?php
$post_var1 = (isset($_POST['var1'])) ? (int) $_POST['var1'] : 0; // PHP shorthand If/Else
$post_var2 = (isset($_POST['var2'])) ? (int) $_POST['var2'] : 0;
$post_var3 = (isset($_POST['var3'])) ? (int) $_POST['var3'] : 0;
$post_var4 = (isset($_POST['var4'])) ? (int) $_POST['var4'] : 0;
$var1 = mysqli_real_escape_string($conn, $post_var1);
$var2 = mysqli_real_escape_string($conn, $post_var2);
$var3 = mysqli_real_escape_string($conn, $post_var3);
$var4 = mysqli_real_escape_string($conn, $post_var4);
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
echo $data;
?>
文档 Shorthand If/Else
我个人会为此创建一个函数,但这取决于您。请记住,您应该“装饰”您的代码,这意味着您还需要能够在一周左右后阅读您的代码,以防您需要 improve/debug ;-) .只为您补充一点:
尝试使用文档,例如:
<?php
/**
* Set up all variables to calculate with.
* First of all there is a check on the $_POST data, it must be integer.
* Second is to set the data.
* @todo: Create function instead of handwriting
*/
$post_var1 = (isset($_POST['var1'])) ? (int) $_POST['var1'] : 0;
$post_var2 = (isset($_POST['var2'])) ? (int) $_POST['var2'] : 0;
$post_var3 = (isset($_POST['var3'])) ? (int) $_POST['var3'] : 0;
$post_var4 = (isset($_POST['var4'])) ? (int) $_POST['var4'] : 0;
/**
* Do the mysqli statements,
*/
$var1 = mysqli_real_escape_string($conn, $post_var1);
$var2 = mysqli_real_escape_string($conn, $post_var2);
$var3 = mysqli_real_escape_string($conn, $post_var3);
$var4 = mysqli_real_escape_string($conn, $post_var4);
/**
* $data calculation.
*/
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
/**
* $data result
*/
echo $data;
?>
文档docblocks
文档 isset()
文档integer
我认为最简单的方法是执行 if 并在该值为空时替换该值。
$vars[] = mysqli_real_escape_string($conn,$_POST['var1']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var2']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var3']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var4']);
$data =0;
foreach($vars as &$var){
if($var =="" || is_string($var)) $var =0;
$data += $var*10;
}
echo $data;
$var1 = mysqli_real_escape_string($conn,$_POST['var1'])
$var2 = mysqli_real_escape_string($conn,$_POST['var2']);
$var3 = mysqli_real_escape_string($conn,$_POST['var3']);
$var4 = mysqli_real_escape_string($conn,$_POST['var4']);
$data = $var1*10+$var2*10+$var3*10+var4*10;
echo $data;
我明白了
"Warning: A non-numeric value encountered in
C:\xampp\htdocs\game\test.php on line 28"
每当我尝试 echo $data
.
我只会在其中一个输入字段留空时收到错误消息。
所以有人可以 告诉我一种方法 来使用 php
代码或添加变量的正确方法来修复此错误,这样我就不会收到错误吗?
所以你需要先检查你的变量是否存在
if(isset($var1) && isset($var2) && isset($var3) && isset($var4)) {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
此代码将首先检查您的变量是否已设置,这意味着您的变量是否具有值,然后将尝试进行数学运算,否则它将跳过这部分代码。
if($var1!=='' && $var2!=='' && $var3!=='' && $var4!=='') {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
如果您的变量已设置但为空,那么您需要进行第二次控制。
如果您的查询有可能 return 一个不同于数字的值,那么您可以使用 is_numeric 函数来确保您的变量都是数字。
if(is_numeric($var1) && is_numeric($var2) && is_numeric($var3) && is_numeric($var4)) {
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + var4 * 10;
echo $data;
}
尝试此代码,因为它会检查 php 变量是否为数字
if(is_numeric($var1) && is_numeric($var2) && is_numeric($var3) && is_numeric($var4) && is_numeric($var5))
{
$data = $var1*10+$var2*10+$var3*10+var4*10;
echo $data;
}
else
echo "Sorry! We have encountered non-numeric variables."
首先你忘记了$var
后的分号。
其次,在您的 $data
中,您忘记将 var4
设为变量,$var4
。
您的代码:
假设 $var1
到 $var4
是数字。
<?php
$var1 = 1;
$var2 = 2;
$var3 = 3;
$var4 = 4;
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
echo $data; // Outcome: 100.
?>
要检查您的变量是否为 整数 ,您可以简单地执行以下操作:
<?php
$post_var1 = (isset($_POST['var1'])) ? (int) $_POST['var1'] : 0; // PHP shorthand If/Else
$post_var2 = (isset($_POST['var2'])) ? (int) $_POST['var2'] : 0;
$post_var3 = (isset($_POST['var3'])) ? (int) $_POST['var3'] : 0;
$post_var4 = (isset($_POST['var4'])) ? (int) $_POST['var4'] : 0;
$var1 = mysqli_real_escape_string($conn, $post_var1);
$var2 = mysqli_real_escape_string($conn, $post_var2);
$var3 = mysqli_real_escape_string($conn, $post_var3);
$var4 = mysqli_real_escape_string($conn, $post_var4);
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
echo $data;
?>
文档 Shorthand If/Else
我个人会为此创建一个函数,但这取决于您。请记住,您应该“装饰”您的代码,这意味着您还需要能够在一周左右后阅读您的代码,以防您需要 improve/debug ;-) .只为您补充一点:
尝试使用文档,例如:
<?php
/**
* Set up all variables to calculate with.
* First of all there is a check on the $_POST data, it must be integer.
* Second is to set the data.
* @todo: Create function instead of handwriting
*/
$post_var1 = (isset($_POST['var1'])) ? (int) $_POST['var1'] : 0;
$post_var2 = (isset($_POST['var2'])) ? (int) $_POST['var2'] : 0;
$post_var3 = (isset($_POST['var3'])) ? (int) $_POST['var3'] : 0;
$post_var4 = (isset($_POST['var4'])) ? (int) $_POST['var4'] : 0;
/**
* Do the mysqli statements,
*/
$var1 = mysqli_real_escape_string($conn, $post_var1);
$var2 = mysqli_real_escape_string($conn, $post_var2);
$var3 = mysqli_real_escape_string($conn, $post_var3);
$var4 = mysqli_real_escape_string($conn, $post_var4);
/**
* $data calculation.
*/
$data = $var1 * 10 + $var2 * 10 + $var3 * 10 + $var4 * 10;
/**
* $data result
*/
echo $data;
?>
文档docblocks
文档 isset()
文档integer
我认为最简单的方法是执行 if 并在该值为空时替换该值。
$vars[] = mysqli_real_escape_string($conn,$_POST['var1']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var2']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var3']);
$vars[] = mysqli_real_escape_string($conn,$_POST['var4']);
$data =0;
foreach($vars as &$var){
if($var =="" || is_string($var)) $var =0;
$data += $var*10;
}
echo $data;