我已经注意到了这一点,并且不确定如何使用它。
基本上,如果您使用它们,PHP似乎神奇地创建了子数组?
// $moo is not defined
$moo['agagag']['sdfsdf'][] = 4654645;
// no E_NOTICE or anything, it creates the array
// array(
// 'agagag' => array(
// 'sdfsdf' => array(
// 0 => 4654645
// )
// )
// )
这种行为是否记录在任何地方?使用安全吗?
(我以前手动创建每个级别,这感觉很奇怪)
答案 0 :(得分:2)
是的,此行为是预期的,并且还记录在manual:
中$arr[key] = value; $arr[] = value; // key may be an integer or string // value may be any value of any type
如果 $ arr尚不存在,则会创建,因此这也是创建数组的替代方法。但是不鼓励这种做法,因为如果$ arr已经包含一些值(例如来自请求变量的字符串),则该值将保留在该位置,并且[]实际上可以代表字符串访问运算符。 通过直接分配初始化变量总是更好。
答案 1 :(得分:1)
这是保存,您可以使用它但我更喜欢以下声明:
$moo = array(
'agagag' => array(
'sdfsdf' => array(
4654645
)
)
);
答案 2 :(得分:0)
这是标准行为,它没有任何问题:您可以在此处查看完整文档:http://php.net/manual/en/language.types.array.php(请参阅“使用方括号语法创建/修改”)。
当然你必须在所有代码中都知道它,当然,如果你事先知道数组的结构,你可以根据@Frankbeen的答案定义它,