【发布时间】:2017-12-30 02:11:06
【问题描述】:
我正在使用 PHP 7.1.0
我在 [PHP 手册的字符串章节][1][1] 中遇到以下令人困惑的文字
警告 写入超出范围的偏移会用空格填充字符串。 非整数类型转换为整数。非法偏移类型发出 E_NOTICE。仅使用分配字符串的第一个字符。作为 在 PHP 7.1.0 中,分配空字符串会引发致命错误。 以前,它分配了一个 NULL 字节。
我努力从上面的文字中理解子句的意思
“只使用分配字符串的第一个字符。”
和
"从 PHP 7.1.0 开始,分配空字符串会引发致命错误。 以前,它分配了一个 NULL 字节。”
上面两个语句的第一个语句我完全看不懂。
对于第二个语句,我尝试通过实际代码来理解它。因此,为此我编写了以下代码,但我不确定此代码是否演示了手册中的语句想要说的内容。以下是我的代码 sn-p。从中,告诉我我是否正确理解了该语句并且是否正确编写了代码以演示 PHP 手册中语句的含义。如果我做错了,请相应地更正我的代码以符合 PHP 手册中的声明。
代码片段:
<?php
$rootbeer = 'A & W';
$rootbeer[] = 'N';
?>
PHP 7.1.0 中的输出:
Fatal error: Uncaught Error: [] operator not supported for strings in hello.php:3 Stack trace: #0 {main} thrown in hello.php on line 3
PHP 5.6.30 中的输出:
Fatal error: [] operator not supported for strings in hello.php on line 3
从上面的两个输出中,我在 PHP 5.6.30 的任何地方都看不到 NULL byte 被分配给某些东西。与这两个版本一样,我得到几乎相同的输出,同样的错误。
请演示 PHP 7.1.0 和 PHP 5.6.30 中的输出之间的区别。这样我就可以更好地理解这些差异。
【问题讨论】:
标签: php string offset fatal-error php-7.1