php的一道面试题
高洛峰
高洛峰 2017-04-10 16:50:44
[PHP讨论组]
function myfunc($a){
    echo $a + 10;
}

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(8)
高洛峰

经过测试:
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

ringa_lee

你应该是 return $a + 10; 吧

在函数里 echo 是什么鬼

高洛峰

为啥=没了 我感觉应该是 20mytest(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)

这样来看,就明确多了。

天蓬老师

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号