给 phper 出一道基本的面试题, 做错了得加强基础了/

2017-03-23 16:11:43 +08:00
 qwe3364925
请输出该结果
echo '6+5' . 9+7;
7702 次点击
所在节点    PHP
74 条回复
littleylv
2017-03-23 18:03:41 +08:00
我觉得出类似的这种题最为笔试题的都是 213
谁特么会写这么烂代码
TIGERB
2017-03-23 18:06:30 +08:00
解: '6+5' . 9+7

知识点:
1. 运算符优先级:这里“. +”运算符的优先级一样,所以从左到右依次运算
2. 字符串做算数运算,字符串会从左到右开始直到不是数字的字符为止转为 int 类型进行算术运算

step 1: '6+5' . 9 => '6+59'
step 2: '6+59' + 7 => 6 + 7 => 13
haiyang416
2017-03-23 18:33:14 +08:00
然后回答正确,哈哈。
misaka20038numbe
2017-03-23 18:35:40 +08:00
我觉得这个语句就应该直接报错, ERROR :代码出错啦,字符串不能加数字!
lepig
2017-03-23 18:41:34 +08:00
看到这样的面试题不应该是扭头就走吗? --引用一位 V 友的话
lepig
2017-03-23 18:43:45 +08:00
还要说一句,这样的代码真的是反人类的代码。不过我还是默默的弄清楚原理吧...溜
quericy
2017-03-23 18:59:01 +08:00
虽然知道考的是运算符优先级的问题,但还是做错了= =

其实每次遇到这种题的时候都很纠结:
一边想吐槽实际项目敢写这种代码的肯定在 review 的时候会被打死;
一边也想所谓的知己知彼,弄清楚原理自己遇到才不会踩坑;

然而踩得坑多了很多时候也只是记起来“哦,这一块有坑”,遇到的时候还是会手动求证一下...

或许这也是这类题目总是会被喷又不断有人出的原因?
crab
2017-03-23 19:19:18 +08:00
这种代码和 i=++i++i++i++ 一样吧?
sunsh217
2017-03-23 19:22:43 +08:00
出这种题的,必然是傻逼喽。
zingl
2017-03-23 20:44:16 +08:00
括号键坏了?
motecshine
2017-03-23 20:46:34 +08:00
这种奇技淫巧弄出来是找喷的
mcfog
2017-03-23 21:45:09 +08:00
面试官就算不是公司技术水平最高的人,至少也是核心骨干吧,出这种面试题的公司我选择筛掉它,要么连面试的目的都不知道,要么什么是真正的基础搞不清楚
sagaxu
2017-03-23 21:49:08 +08:00
哪个 sb 公司出这种题,扭头就跑
cxbig
2017-03-23 21:49:42 +08:00
考校这种东西有意义么?工作中有谁会这么写逻辑。。。
wdlth
2017-03-23 22:05:29 +08:00
那为何不问 echo '6+5' . 9+7 和 echo '6+5'.9+7 及 echo '6+5' .9 + 7 的区别?
moult
2017-03-23 22:05:34 +08:00
intval('123abc')===123 !!!
跟 JS 的 parseInt 返回一样的。
realpg
2017-03-23 22:08:02 +08:00
出这题的,中谭浩强的毒太深 没救了 直接拉太平间火化了吧
dangyuluo
2017-03-23 22:26:15 +08:00
茴字的六种写法,你会么?
allenhu
2017-03-23 22:51:05 +08:00
没任何意义,写出这样的代码,基本也不用混了🙅
bianhua
2017-03-23 23:10:13 +08:00
@realpg

不觉得。

我倒是觉得这原因是 PHP 花样坑人,因为这里在拼接字符串的时候又引入了 PHP 自动类型转换的规则。而 PHP 的转换规则很多时候就是在造坑。

比如例子里的 ((int)'6+1') == intval('6+1') == 6 。从其他语言的叫都上来看完全属于设计不合理,因为会导致混乱。

试想如果你想严格判断整数输入的话,只能在 intval 转换前再加上一些格式判断,否则甚至可能就会导致安全问题(比如 var_dump('0e1' == '0e2') => true )。

在语言这么坑的情况下,想写出安全稳定的程序真是如履薄冰。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/349774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX