<?php
error_reporting(-1);
$a = array('key' => '2');
$a = $a['key'];
var_dump($a);
echo $a['key'], "\n";
?>
Run Code Online (Sandbox Code Playgroud)
我希望代码抛出空字符串或警告说密钥不存在,但代码打印2;
PHP 5.3.10-1
Update1:添加var_dump和error_reporting.
输出是
hari@hari-laptop:~$ php run.php
string(1) "2"
2
Run Code Online (Sandbox Code Playgroud)
$a是一个保存值的字符串"2".
可以使用方括号将PHP中的字符串编入索引以访问其字符.例如:
$a = "abcde";
echo $a[3]; // This will print 'd'
Run Code Online (Sandbox Code Playgroud)
当索引是字符串时,PHP会尝试将其解析为整数.如果字符串不是数字,则解析将给出0.因此,使用表示第一个字符的第零个索引.(在PHP 5.4及更高版本中,它会发出警告).在你的情况下,你得到"2"因为$a['any_stuff']=第一个字符='2'
从PHP手册:
字符串访问和按字符修改
通过使用方形数组括号指定字符串后所需字符的从零开始的偏移量,可以访问和修改字符串中的字符,如
$str[42].将字符串视为用于此目的的字符数组.当您想要提取或替换多个字符时substr(),substr_replace()可以使用这些函数.从PHP 5.4开始,字符串偏移必须是整数或类似整数的字符串,否则将引发警告.