【问题标题】:Php 7.1 - Empty index operator arrayPhp 7.1 - 空索引运算符数组
【发布时间】:2017-02-04 20:37:33
【问题描述】:

http://php.net/manual/en/language.types.array.php 所述

注意:从 PHP 7.1.0 开始,对字符串应用空索引运算符会引发致命错误。以前,字符串被静默转换为数组。

谁能告诉我这个例子是什么意思?

它将如何影响我的代码?

谢谢!

【问题讨论】:

    标签: php arrays string error-handling


    【解决方案1】:

    在 PHP

    $var = 'somestring';
    $var[] = 'a'; # yields array with two elements ['somestring', 'a']
    

    在 PHP >= 7.1 中,这会产生

    致命错误:未捕获的错误:字符串不支持 [] 运算符

    【讨论】:

    • 这听起来不错。但是I'm seeing 那个错误也会影响 5.6 和 7.0...?
    • 是否有任何替代解决方案?我有一些代码正在使用它,但我无法更改变量名。
    • @DevAggarwal:你的具体问题是什么?
    • @JiriHrazdil 嘿,感谢您的帮助。我现在使用 php 7.0。这很好用。稍后我会尝试 php 7.1。 :)
    • @JiriHrazdil :它在 PHP 5.6.30 中抛出致命错误,就像在 PHP 7.1.0 中一样,而不是默默地将字符串转换为一个数组,如果 PHP 手册中的文本是相信。它不像您在 PHP 5.6.30 的回答中提到的代码那样发生
    【解决方案2】:

    文档中的措辞有点奇怪,但 7.1 中的变化是当您有一个空字符串然后以这种方式访问​​它时:3v4l.org/V5YJa

    看看下面的代码:

    <?php
    $rootbeer = '';
    $rootbeer[] = 'T';
    ?>
    

    使用 PHP 7.1.0 输出:

    Fatal error: Uncaught Error: [] operator not supported for strings in your_file.php:4
    Stack trace:
    #0 {main}
      thrown in your_file.php on line 4
    

    使用 PHP 7.0.1 之前的 PHP 版本,字符串会以静默方式转换为数组,而不会发出任何警告或错误。

    我希望这可以消除您的疑问。

    【讨论】:

    • 我会说文档中的措辞倾向于事实上不正确,而不仅仅是奇怪。
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2014-01-25
    • 2019-08-21
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2011-09-24
    相关资源
    最近更新 更多