Home  >  Article  >  Backend Development  >  php的一道面试题

php的一道面试题

WBOY
WBOYOriginal
2016-06-06 20:17:451358browse

<code>function myfunc($a){
    echo $a + 10;
}

$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
</code>

不是应该输出myfunc(10)=20吗?

回复内容:

<code>function myfunc($a){
    echo $a + 10;
}

$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
</code>

不是应该输出myfunc(10)=20吗?

经过测试:
LZ这道面试题主要是考察执行顺序,具体解答过程如下:
a.echo "myfunc($val)=";
单独这样的时候,输出结果为:myfunc(10)= ,说明双引号中只不解析函数,只解析变量
b.echo "myfunc($val)=".myfunc($val);
拼接上后面的函数后,结果为:20myfunc(10)= ,说明后面的函数先执行输出了20。然后执行了echo语句。

总结:第一步执行后面的函数输出了20,然后在执行echo语句。故结果为:20myfunc(10)=

笑话… 你的 myfunc 的输出是 echo 又不是 return .... 不要异想天开好么… 函数先执行然后再是外部的 echo 执行啊……

函数myfunc里面直接输出里结果,不是return

你应该是 return $a + 10; 吧

在函数里 echo 是什么鬼

为啥=没了 我感觉应该是 20mytest(10)=,前面那个20应该是后面那段的输出。

echo 的时候是先把 echo 后面的值计算出来之后才把最终结果输出的
计算的过程执行了 myfunc 这个函数,而 myfunc 里面有一个 echo 了所以就先输出了 20
另外,函数里面要有 return 才会返回值

<code>function myfunc($a){
    return $a + 10;
}

$val = 10;
echo "myfunc($val)=".myfunc($val);</code>

<code class="php">function myfunc($a){
    echo $a + 10;
    echo "\n";
}

$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)</code>

这样来看,就明确多了。

我也算是看明白了, 你在函数里面直接echo 。好好看清楚代码,你就明白了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn