1
SoloCompany 2014-10-06 01:55:19 +08:00
不明白lz吐槽的是神马
php > var_export(explode(",","a,b,c")); array ( 0 => 'a', 1 => 'b', 2 => 'c', ) php > var_export(explode(",”,"a,b,c")[0]); 'a' php > echo phpversion(); 5.5.17 |
2
keefo 2014-10-06 04:58:09 +08:00
已测,只返回一个 "ok"
|
3
breeswish 2014-10-06 09:20:33 +08:00
PHP 5.4 以前是不支持直接对函数返回的数组访问下标的,这是语法上的限制
http://php.net/manual/zh/language.types.array.php 「自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。」 |
4
breeswish 2014-10-06 09:23:00 +08:00
关于 strpos,PHP 手册上也明确写了应当使用全等符号来比较。
http://php.net/manual/zh/function.strpos.php 「此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。」 不看手册凭直觉掉进了坑怪谁呢 = = |
5
whywhywhy OP @SoloCompany 我的5.2,看来是我out了
@keefo 想判断是不是Date:开头的字符串 因为是在字符串开头,所以找到的话会返回0,找不到的话会返回false,在其他位置会返回对应的数字 因为对比的时候是数字0,所以找不到时返回的false会转换成0,于是……这个判断任何时候都会返回“true”。想了好久好久,才想到这个原因。要用3个等号判断…… |
6
whywhywhy OP @breeswish
第一个:我是asp,js菜鸟转过来的……习惯了用[0]直接放函数后面,嘿嘿,没想到在php5.4才支持。 第二个:当时出来结果不对……就郁闷了,反复测试几次,才想到可能是判断的时候false转换成0了…… 哎,有的东西不知道用什么关键词搜,头疼。 至于手册……大概看了看,没注意到后面 |
7
gamexg 2014-10-06 10:02:14 +08:00
跨语言很容易掉进这种小坑。
|
10
Mac 2014-10-07 22:15:09 +08:00
以前也很固执的停在5.2上好久,后来发现越来越多的问题在5.4下不是问题了,连性能也大幅度提升。
|