如何在 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;