在php函数中使用echo和return时发生了什么?
我创建了一个函数并在其上回显一个字符串。之后,我将使用这个函数连接一个字符串。为什么这个函数值出现在连接字符串之前在php函数中使用echo和return时发生了什么?,php,function,return-value,Php,Function,Return Value,我创建了一个函数并在其上回显一个字符串。之后,我将使用这个函数连接一个字符串。为什么这个函数值出现在连接字符串之前 function my_function(){ echo " Second Text"; } echo " First Text, ".my_function(); 输出:第二个文本第一个文本, 我的预期输出是第一个文本,第二个文本 另一方面,当我在echo的函数替代项中使用return时。我得到了我的预期输出 function my_function(){ r
function my_function(){
echo " Second Text";
}
echo " First Text, ".my_function();
输出:第二个文本第一个文本,
我的预期输出是第一个文本,第二个文本
另一方面,当我在echo
的函数替代项中使用return
时。我得到了我的预期输出
function my_function(){
return " Second Text";
}
echo " First Text, ".my_function();
输出:第一个文本,第二个文本
为什么我无法通过函数中的echo
获得预期输出?在这种情况下:
function my_function () {
echo " Second Text";
}
echo " First Text, " . my_function();
内部发生的情况类似于:
echo " First Text, " . echo " Second Text";
从的抓取:
在函数外部的
echo
之前,PHP尝试将文本与函数的返回连接起来,但是函数echo
s并返回NULL
,然后执行echo。同样的情况也发生在var\u dump()
上
你有两个选择:
返回
function my_function () {
echo " Second Text";
}
echo " First Text, ", my_function();
我已经检查了所有的代码,它的工作如预期 进行初始回波时,使用concat
function my_function(){
echo " Second Text";
}
echo " First Text, ".my_function();
PHP必须首先处理函数,因为是串联的,换句话说,它需要从函数返回,然后才能完成echo命令。因此,假设它执行my_函数
,然后最终执行echo。这会导致首先回显函数内容,然后再回显外部内容
将逗号与echo放在一起就像放了另一个参数,只是echo不是一个函数,而是一个语言构造,因此您可以这样想(但不是这样做)echo(“第一个文本,”,my_function())
,在这种情况下,echo只单独输出每个部分。当您使用
时,它首先生成字符串(如果不先调用函数,它就无法生成字符串),然后输出整个构造
所以这些应该是你想要做什么的选择
//Option 1
function my_function(){
return " Second Text";
}
echo " First Text, ".my_function();
//Option 2
function my_function(){
echo " Second Text";
}
echo " First Text, ";
my_function();
//Option 3
function my_function(){
echo " Second Text";
}
echo " First Text, ",my_function();
就我个人而言,我会选择第一个,因为它是最灵活的(在国际海事组织看来也是最好的)。比如说
//Option 1
echo " First Text, ".my_function()." Third Text";
//Option 2
echo " First Text, ";
my_function();
echo " Third Text";
//Option 3
echo " First Text, ",my_function()," Third Text";
对我来说,逗号的确是一个奇怪的选择,虽然它可能会起作用,但当我在代码中看到它时,它看起来很奇怪,因为它在echo中有一种特殊的用途。我也尽量不直接从函数中回音,但我通常只做OOP(面向对象编程),所以对我来说,这主要是一个范围问题
希望能有所帮助。我找不到
输出
和之间的区别,我的预期输出是
,在echo
函数外部,PHP尝试将文本与函数的返回连接起来,但函数echo
s并返回NULL
,然后执行echo
。第一种情况下的输出是否正确?对于第一个输出,您声明输出与您的预期相同,并询问您为什么没有获得预期输出。这是我的写作错误。我做correction@TanmoyBiswas我已经回答了。我明白了。你对内部材料的解释是错误的。它没有解释为什么输出是“第二个文本第一个文本”,或者为什么PHP从右到左求值。但当我在本地主机上运行此代码时。它与我以前的输出相同。我使用PHP7和xampp@TanmoyBiswas请尝试清除缓存,并确保它已正确保存,就像您正在编辑正确的文件和内容一样。@Praveen Kumar我已正确清除浏览器缓存。但结果仍然是一样的