PHP 回声错误 - 相同的回声,很少有效,很少无效
PHP echo error - same echoes, few work, few doesn't
我有一个非常奇怪的问题:下面列出的代码中有 4 个回声几乎相同,但只有最后一个正常工作(前两个回声只打印加法/减法的答案,没有文本)。
这是代码:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?><br>
<?php $sk1 = $_POST["sk1"];
$sk2 = $_POST["sk2"];
$veiksm = $_POST["veiksmas"];
switch($veiksm){
default:
echo "Jus nepasirinkote veiksmo";
break;
case "sud":
echo "Sudeties veiksmo rezultatas: " .$sk1 + $sk2;
break;
case "ati":
echo "Atimties veiksmo rezultatas: " .$sk1 - $sk2;
break;
case "dal":
echo "Dalybos veiksmo rezultatas: " .$sk1 / $sk2;
break;
case "dau":
echo "Daugybos veiksmo rezultatas: " .$sk1 * $sk2;
break;
}
?>
</body>
</html>
您必须在计算中加上括号,例如:
echo "Atimties veiksmo rezultatas: " . ($sk1 - $sk2);
//^ See here ^
否则你可以想象你的 echo 语句是这样的:
"Sudeties veiksmo rezultatas: 17" + 5 // Same as 0 + 5, because the string is casted to int which is 0
*
和 /
也有效,因为它们首先得到评估
在计算两边加上括号,如下所示:
echo "Sudeties veiksmo rezultatas: " . ($sk1 + $sk2);
这是因为处理表达式的顺序。没有括号,PHP 从左到右评估所有内容,因此它将首先将 $sk1
连接到字符串。组合值将为 "Sudeties veiksmo rezultatas: 1"
(如果 $sk1 为 1)。
之后,将 $sk2
添加到该值。因为 PHP 无法将字符串相加,所以它会尝试将其转换为数字。此转换失败,因为字符串以非数字文本开头,并且默认为 0
,它被添加到 $sk2
的值。
乘法和除法运算符具有更高的优先级,因此首先计算它们,覆盖从左到右的顺序。这就是它适用于最后两种情况的原因。
我有一个非常奇怪的问题:下面列出的代码中有 4 个回声几乎相同,但只有最后一个正常工作(前两个回声只打印加法/减法的答案,没有文本)。 这是代码:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?><br>
<?php $sk1 = $_POST["sk1"];
$sk2 = $_POST["sk2"];
$veiksm = $_POST["veiksmas"];
switch($veiksm){
default:
echo "Jus nepasirinkote veiksmo";
break;
case "sud":
echo "Sudeties veiksmo rezultatas: " .$sk1 + $sk2;
break;
case "ati":
echo "Atimties veiksmo rezultatas: " .$sk1 - $sk2;
break;
case "dal":
echo "Dalybos veiksmo rezultatas: " .$sk1 / $sk2;
break;
case "dau":
echo "Daugybos veiksmo rezultatas: " .$sk1 * $sk2;
break;
}
?>
</body>
</html>
您必须在计算中加上括号,例如:
echo "Atimties veiksmo rezultatas: " . ($sk1 - $sk2);
//^ See here ^
否则你可以想象你的 echo 语句是这样的:
"Sudeties veiksmo rezultatas: 17" + 5 // Same as 0 + 5, because the string is casted to int which is 0
*
和 /
也有效,因为它们首先得到评估
在计算两边加上括号,如下所示:
echo "Sudeties veiksmo rezultatas: " . ($sk1 + $sk2);
这是因为处理表达式的顺序。没有括号,PHP 从左到右评估所有内容,因此它将首先将 $sk1
连接到字符串。组合值将为 "Sudeties veiksmo rezultatas: 1"
(如果 $sk1 为 1)。
之后,将 $sk2
添加到该值。因为 PHP 无法将字符串相加,所以它会尝试将其转换为数字。此转换失败,因为字符串以非数字文本开头,并且默认为 0
,它被添加到 $sk2
的值。
乘法和除法运算符具有更高的优先级,因此首先计算它们,覆盖从左到右的顺序。这就是它适用于最后两种情况的原因。