msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

19 Dec 11 之前提到的PHP5.4一个注意点的update

在之前, 我曾经介绍过, 在PHP5.4中, PHP5.4中一个需要注意的变化(Chained string offsets) , 后续因为大多数人都表示这个变化很敏感, 容易成为坑.. 于是, 我们现在对此做了一些改进.

具体的改变是, 对于一个变量$a, 如果$a是一个字符串, 那么, 对于非数字型索引, 比如$a["foo"], 在isset的时候将返回false, empty返回true, 但是为了兼容已有的代码, 当你获取这个值的时候, 还是会返回$a[0], 不过会额外抛出一个警告信息. 比如:

<?php
$a = "laruence";
var_dump($a["foo"]) ; //PHP Warning:  Illegal string offset 'foo'
//output string(1) "l"

var_dump(isset($a["foo"]));
//false

var_dump(empty($a["foo"]));
//true

而对于键值是bool, double, null的情况, 将会和以前保持一致, 不过会抛出一个Notice信息.

<?php
$a = "bar";
echo $a[TRUE];  //PHP Notice:  String offset cast occured
//output a

而对于数字型的字符串索引, 比如”1″, “12″等, 和以前保持一致.

不过, 还是要提醒下: PHP 5.4还处于开发阶段, 在最终release之前, 任何新特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.

谢谢

更多更新信息, 请关注: Changelog


分享到:



Related Posts:

Tags: ,

10 Responses to “之前提到的PHP5.4一个注意点的update”

  1. wangtao |

    被小坑了下。微博关注你了,百度php问题竟然也是你的解答

  2. 新浪微博rss |

    刚好踩坑,offset为double的时候报错,然后(int)就好了

  3. 黑客技术 |

    感觉这个没有必要,统一才是王道,前人埋坑,后人填坑,早晚会成为一个笑柄

  4. 之前提到的PHP5.4一个注意点的update树林/咖啡 成都专业php网站制作 | 树林/咖啡 成都专业php网站制作 |

    [...] 风雪之隅 » PHP源码分析 Posted in: php / Tagged: 之前提到的PHP5.4一个注意点的update [...]

  5. test |

    var_dump(isset($a["foo"]));
    //false

    已经定义的变量,为什么会是false?

  6. webxu |

    php版本问题?

  7. webxu |

    var_dump(isset($a["foo"]));php执行出来是true

    var_dump(empty($a["foo"]));php执行出来是false

    怎么解释?

  8. wclssdn |

    看来以后只能每次都isset一次了- -..

  9. treesky |

    这个非常实用,避免了悄无声息的发生问题!

  10. 神仙 |

    有个notice就好很多了。

Leave a Reply

*