我刚发现这会起作用:
echo $value , " contiue";
但这不是:
return $value , " contiue";
而“。”适用于两者。
这里的句号和逗号之间有什么区别?
答案 0 :(得分:64)
答案 1 :(得分:28)
您还必须注意echo
作为构造使用逗号 比使用点更快
所以,如果你加入一个角色400万次,这就是你得到的:
echo $ str1,$ str2,$ str3;
关于 2.08 秒
echo $ str1。 $ str2。 $ STR3;
关于 3.48 秒
如上所示,它几乎需要一半的时间。
这是因为带点的PHP连接字符串首先然后输出它们,而逗号只是一个接一个地打印出来。
我们正在谈论分数,但仍然。
答案 2 :(得分:19)
.
是PHP中的连接运算符,用于将两个字符串放在一起。逗号可用于多个输入以进行回显。
答案 3 :(得分:10)
Dot(.
)用于连接变量或字符串。这就是为什么它在连接两个字符串时回显的原因,并且当你在方法中返回一个字符串的串联时它可以工作。但是逗号没有连接,这就是return语句不起作用的原因。
echo
是一种语言结构,可以使用多个表达式,这就是逗号的工作原理:
void echo ( string $arg1 [, string $... ] )
使用点进行连接
答案 4 :(得分:7)
echo
是一种语言结构(不是一个函数),可以使用多个参数,这就是,
有效的原因。使用逗号会略微均匀(但只有几纳秒,无需担心)
.
是字符串
答案 5 :(得分:5)
echo
实际上是一个函数(不是真的,但让我们说它是用于参数),它接受任意数量的参数并将它们连接在一起。
虽然return
不是函数,而是一个关键字,它告诉函数返回值,并且它试图将,
解释为某种运算符。在使用return语句时,您应该使用.
作为连接运算符。
答案 6 :(得分:0)
值得一提的是,串联运算符.
的优先级高于其他许多运算符,并且与+
和-
运算符的优先级相同
为什么这很重要?
好吧,谈话很便宜,让我向您展示代码(摘自PHP documentation)
$x = 4;
// this line might result in unexpected output:
echo "x minus one equals " . $x-1 . ", or so I hope\n";
// because it is evaluated like this line:
echo (("x minus one equals " . $x) - 1) . ", or so I hope\n";
// the desired precedence can be enforced by using parentheses:
echo "x minus one equals " . ($x-1) . ", or so I hope\n";
实际上,从PHP 7.4.0开始,第一行将发布弃用消息
已弃用:包含以下内容的非括号表达式的行为 都“。”和'+'/'-'将在PHP 8中更改:'+'/'-'将花费更高 优先
因此在PHP 8中,似乎可以通过为+
和-
运算符赋予更高的优先级来解决这种情况下的关联性问题。
那么我们现在可以说使用回声时的.
和,
会得到相同的结果吗?
不,他们不会总是给出相同的结果
让我们以这种情况为例
echo ' Here\'s ' . $name ?? 'Johnny';
这里我们使用了Null coalescing operator,所以如果$ name存在并且不为NULL,它将被返回,否则返回Johnny。乍一看,可能会认为结果是这里是Johnny ,因为未定义$ name,所以他们希望如此。
实际上结果是
PHP Notice: Undefined variable: name
Here's
这里发生的是??
运算符的优先级比.
低,这意味着PHP将首先尝试评估(此处为$ name)。
您可以通过将表达式放在括号中来解决此问题
echo ' Here\'s ' . ($name ?? 'Johnny');
或者只是使用逗号。
echo ' Here\'s ' , $name ?? 'Johnny';