PHP字符串索引';错误';

PHP字符串索引';错误';,php,string,Php,String,我不想把明显的问答简单化,我想知道是否有人知道为什么会发生以下情况 我有一个值为“1011100001111”的字符串变量$string 在特定位置测试“1”或“0”: $string[00] => '1' // correct $string[01] => '0' // correct $string[07] => '0' // correct $string[08] => '1' // should be '0' $string[ 8] => '0'

我不想把明显的问答简单化,我想知道是否有人知道为什么会发生以下情况

我有一个值为“1011100001111”的字符串变量$string

在特定位置测试“1”或“0”:

$string[00] => '1'  // correct
$string[01] => '0'  // correct
$string[07] => '0'  // correct
$string[08] => '1'  // should be '0'
$string[ 8] => '0'  // correct
我花了一段时间才发现使用前缀0时的错误,显然我已经去掉了它们,但是为什么索引08与8不同呢?注意,到07它确实有效

从有关整数:

要使用八进制表示法,请在数字前面加0(零)

因此
08
不是整数8,因此不会返回您期望的索引。它是一个无效的八进制,并从有关整数解析为0。

要使用八进制表示法,请在数字前面加0(零)


因此
08
不是整数8,因此不会返回您期望的索引。这是一个无效的八进制数,解析为0。

如果在数字前面加上0,它们将被视为八进制数。所以从00到07,它们相当于0-7位小数。但是08不存在于八进制中,所以它解析为0。

如果在数字前面加上0,它们将被视为八进制数。所以从00到07,它们相当于0-7位小数。但是08不存在于八进制中,所以它解析为0。

如果我没记错的话,当您使用
08
时,它使用该数字的十六进制值,而不是十进制值。所以它看起来不像你想象的那样。@WiktorStribiżew啊,八进制,不是十六进制。谢谢你澄清此事-DPHP7给出了一个
解析错误:在…
中无效的数字文字,即
08
是无效的八进制数如果我记得正确,当您使用
08
时,它使用该数字的十六进制值,而不是十进制值。所以它看起来不像你想象的那样。@WiktorStribiżew啊,八进制,不是十六进制。谢谢你澄清此事-DPHP7给出了一个
解析错误:在…
中无效的数值文本,即
08
是一个无效的八进制数,但有一个好消息。在PHP7中,它将生成一个解析错误,感谢您清除这个错误。让我想知道如果我使用008会得到什么结果。我会努力找出答案,但有好消息。在PHP7中,它将生成一个解析错误,感谢您清除这个错误。让我想知道如果我使用008会得到什么结果。我会尽力弄清楚的。