Php 什么';“的意思是什么;分配一个空字符串";在这种情况下?

Php 什么';“的意思是什么;分配一个空字符串";在这种情况下?,php,string,offset,fatal-error,php-7.1,Php,String,Offset,Fatal Error,Php 7.1,我使用的是PHP7.1.0 我在PHP手册的[Strings章节][1]中遇到了以下令人困惑的文本 警告写入超出范围的偏移量会在字符串中填充空格。 非整数类型转换为整数。非法偏移类型发射 请注意。仅使用指定字符串的第一个字符。作为 在PHP7.1.0中,分配空字符串会引发致命错误。 以前,它分配了一个空字节 我努力从上面的课文中理解这些条款的含义 “仅使用指定字符串的第一个字符。” 及 “从PHP7.1.0开始,分配空字符串会引发致命错误。 以前,它分配了一个空字节。” 从以上两个陈述中我一点也

我使用的是PHP7.1.0

我在PHP手册的[Strings章节][1]中遇到了以下令人困惑的文本

警告写入超出范围的偏移量会在字符串中填充空格。 非整数类型转换为整数。非法偏移类型发射 请注意。仅使用指定字符串的第一个字符。作为 在PHP7.1.0中,分配空字符串会引发致命错误。 以前,它分配了一个空字节

我努力从上面的课文中理解这些条款的含义

“仅使用指定字符串的第一个字符。”

“从PHP7.1.0开始,分配空字符串会引发致命错误。 以前,它分配了一个空字节。”

从以上两个陈述中我一点也不理解第一个陈述

对于第二个语句,我试图通过实际代码来理解它。为此,我编写了以下代码,但我不确定这段代码是否演示了手册中的语句想要说的内容。下面是我的代码片段。从中,告诉我是否正确理解了该语句,是否正确编写了代码,以演示PHP手册中该语句的含义。如果我做错了,请相应地更正我的代码,以符合PHP手册中的声明

代码片段:

<?php 
$rootbeer = 'A & W';
$rootbeer[] = 'N';
?>
Fatal error: [] operator not supported for strings in hello.php on line 3
PHP 5.6.30中的输出:

<?php 
$rootbeer = 'A & W';
$rootbeer[] = 'N';
?>
Fatal error: [] operator not supported for strings in hello.php on line 3
从以上两个输出中,我看不到在PHP5.6.30中有任何NULL byte被分配到某个对象。和这两个版本一样,我得到了几乎相同的输出,相同的错误


请演示PHP 7.1.0和PHP 5.6.30的输出之间的差异。这样我才能更好地理解差异。

您既没有指定空字符串,也没有使用超出范围的偏移量。我相信您要尝试的代码如下所示:

<?php
$rootbeer = 'A & W';
$rootbeer[7] = '';
echo $rootbeer;

您既没有分配空字符串,也没有使用超出范围的偏移量。我相信您要尝试的代码如下所示:

<?php
$rootbeer = 'A & W';
$rootbeer[7] = '';
echo $rootbeer;

我知道这件事。手册中明确提到>“从PHP7.1.0开始,分配空字符串会引发致命错误。但在你的代码中,它只是一个警告。您的代码并没有显示生成了致命错误。这确实是一个谜。我查看了警告的来源,该警告确实是在7.1版中引入的。那么,可能文档与实现不一致?我觉得这是一个奇怪的巧合,行为的改变发生在正确的版本,而不是它所描述的方式。谢谢你的仔细观察。请演示“从PHP7.1.0开始,对字符串应用空索引运算符会引发致命错误。以前,字符串被静默转换为数组。”以及一些合适的示例?再次感谢。我在等你的答复。我的意思是那个致命的错误似乎不存在。虽然该文件没有警告,但您可以在中找到上面引用的警告。在同一个函数中没有致命的错误,我希望它出现在那个地方。谢谢jsfan。帮我解决这个我知道这件事。手册中明确提到>“从PHP7.1.0开始,分配空字符串会引发致命错误。但在你的代码中,它只是一个警告。您的代码并没有显示生成了致命错误。这确实是一个谜。我查看了警告的来源,该警告确实是在7.1版中引入的。那么,可能文档与实现不一致?我觉得这是一个奇怪的巧合,行为的改变发生在正确的版本,而不是它所描述的方式。谢谢你的仔细观察。请演示“从PHP7.1.0开始,对字符串应用空索引运算符会引发致命错误。以前,字符串被静默转换为数组。”以及一些合适的示例?再次感谢。我在等你的答复。我的意思是那个致命的错误似乎不存在。虽然该文件没有警告,但您可以在中找到上面引用的警告。在同一个函数中没有致命的错误,我希望它出现在那个地方。谢谢jsfan。帮我解决这个问题