php print(或 echo)命令如何解释数学符号


How does the php print (or echo) commands interpret math symbols?

我正在学习php,代码严格用于我的教育,所以我不是在寻找"更好"的方法。

当我学习语言时,我正在尝试所有内容,并创建我正在尝试的文档。 我发现 echo 和 print 命令的一些奇怪行为,想知道:
1)我真的需要3行来打印"2 + 3 = 5"吗
2)到底发生了什么? 为什么我在示例 #2 中得到 6

示例 1 - 不起作用,似乎无论我做什么都会进行评估。 单引号、双引号甚至转义加号("2/+ 3")都不起作用。

echo('2 + 3 = '.$var1 + $var2.'<br>');// 5
echo("2 + 3 = ".$var1 + $var2.'<br>');// 5
echo('2 /+ 3 /= '.$var1 + $var2.'<br>');// 5

示例 2 - 现在它变得奇怪,因为我得到 6。 如果我将 3 更改为 4,我会得到 7,所以它几乎就像"3 = " = 1 和"4 = " = 2 然后隐式添加到以下内容中,但我对此表示怀疑。

echo("2 + ");
echo(" 3 = ".$var1 + $var2.'<br>');// 2 + 6?
echo("2 + ");
echo(" 4 = ".$var1 + $var2.'<br>');// 2 + 7??

示例 3 - 我真的需要 3 行才能完成任务吗? 让我想起了福特兰。

echo("2 + ");
echo(" 3 = ");
echo($var1 + $var2.'<br>');// 2 + 3 = 5

为了帮助解决问题,var1 = 2 和 var2 = 3。 这些值无关紧要。 我只是想附上一个文字和一个评估的解释。

我想让代码回显'2 + 3 = '.$var 1 + $var 2。
' 导致"2 + 3 = 5",但我得到的只是 5 或 2 + 3 = 2 + 3。

为什么这里只有一个 5?

echo('2 + 3 = '.$var1 + $var2.'<br>');// 5 

为什么不求值第二个表达式?

echo('2 + 3 = '."$var1 + $var2".'<br>');// 2 + 3 = 2 + 3

首先让我们看一下单引号和双引号。假设我们有以下变量:

$var1 = 1;

如果我们用单引号或双引号回显这个变量:

echo "$var1"; //result: 1
echo '$var1'; //result: $var1
因此,双引号将回显

值,而单引号将简单地回显文字变量名称,就好像它只是一个字符串一样。

现在让我们看一下示例 1。在这种情况下,您使用哪种类型的引号或转义字符(反斜杠:''而不是正斜杠:/)无关紧要,因为您没有回显引号内的变量:

echo "string" . $var1 + $var2 . "more strings";

如您所见,$var1$var2不在引号之内。它们只是通过点.字符添加到其中。因此,如果我们修改示例一,结果会有所不同:

echo '2 + 3 = $var1 + $var2<br>'; //result: 2 + 3 = $var1 + $var2
echo "2 + 3 = $var1 + $var2<br>";//result: 2 + 3 = 5
echo '2 /+ 3 /= $var1 + $var2<br>';//result: 2 /+ 3 /= $var1 + $var2

在最后一个回声中,试图转义加号和/或等号是完全没有意义的。PHP 中的转义字符是一种防止字符串提前结束或确保返回正确字符串信息的技术。例如:

echo 'John's Car'; //This will return an error
echo 'John''s Car'; //This will work perfectly fine

在第一种情况下,PHP 注意到字符串中某处的第二个单引号。它假设我们在那里结束我们的字符串,而我们想在我们的字符串中放一个文字引用。转义字符告诉 PHP 我们希望在字符串中放置一个引号,而不是在那里结束它。

不幸的是,我无法帮助您使用示例 2,因为如果没有 $var1$var2 的值,您的问题就无法复制。

要回答示例 3 中的问题:不,您没有。这也将正常工作:

echo "2 + 3 = " . $var1 + $var2 . "<br>";

希望我已经为你说得更清楚了。请记住,本网站更多的是针对具体问题,而不是对您的教育的额外解释。如果你不明白什么,问问你的老师或找一些更适合这个的论坛。如果您有具体问题,我们随时为您服务!

正如安德烈指出的那样,这是因为操作的顺序。 我找到了这个页面,特别是:

需要注意的是 - 点运算符与 + 和 - 具有相同的优先级,这可能会产生意外的结果。

例:

<php
$var = 3;
echo "Result: " . $var + 3;
?>

上面将打印出"3"而不是"结果:6",因为首先创建字符串"Result3",然后将其添加到 3 中,产生 3,非空的非数字字符串被转换为 0。

要打印"结果:6",请使用参数更改优先级:

<php
$var = 3;
echo "Result: " . ($var + 3);
?>

所以我的解决方案是:

echo '2 + 3 = '.($var1 + $var2).'<br>'; //result: 2 + 3 = 5