function myfunc($a){
echo $a + 10;
}
$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
不是应该输出myfunc(10)=20吗?
function myfunc($a){
echo $a + 10;
}
$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
不是应该输出myfunc(10)=20吗?
echo 的时候是先把 echo 后面的值计算出来之后才把最终结果输出的
计算的过程执行了 myfunc 这个函数,而 myfunc 里面有一个 echo 了所以就先输出了 20
另外,函数里面要有 return 才会返回值
function myfunc($a){
return $a + 10;
}
$val = 10;
echo "myfunc($val)=".myfunc($val);
function myfunc($a){
echo $a + 10;
echo "\n";
}
$val = 10;
echo "myfunc($val)=".myfunc($val); //20myfunc(10)
这样来看,就明确多了。
这个题比较有意思,先不提运算的优先级。咱们看下另一段代码。
function myfunc($a){
echo $a + 10;
}
$val = 10;
echo "myfunc($val)=", myfunc($val); // myfunc(10)=20
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
经过测试:
LZ这道面试题主要是考察执行顺序,具体解答过程如下:
a.echo "myfunc($val)=";
单独这样的时候,输出结果为:myfunc(10)= ,说明双引号中只不解析函数,只解析变量
b.echo "myfunc($val)=".myfunc($val);
拼接上后面的函数后,结果为:20myfunc(10)= ,说明后面的函数先执行输出了20。然后执行了echo语句。
总结:第一步执行后面的函数输出了20,然后在执行echo语句。故结果为:20myfunc(10)=