创建多维php数组而不声明
我注意到了这一点,不知道如何处理它 基本上,如果您使用子数组,PHP似乎可以神奇地创建子数组创建多维php数组而不声明,php,arrays,Php,Arrays,我注意到了这一点,不知道如何处理它 基本上,如果您使用子数组,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
// $moo is not defined
$moo['agagag']['sdfsdf'][] = 4654645;
// no E_NOTICE or anything, it creates the array
// array(
// 'agagag' => array(
// 'sdfsdf' => array(
// 0 => 4654645
// )
// )
// )
这种行为是否有记录在案?使用安全吗
(我习惯于手动创建每个关卡,这感觉很奇怪)它是保存的,您可以使用它,但我更喜欢以下声明:
$moo = array(
'agagag' => array(
'sdfsdf' => array(
4654645
)
)
);
是的,这种行为是预期的,并记录在: 如果$arr还不存在,则将创建它,因此这也是创建数组的另一种方法。但是,不鼓励这种做法,因为如果$arr已经包含一些值(例如,请求变量中的字符串),那么该值将保留在原来的位置,[]实际上可能代表字符串访问运算符最好通过直接赋值来初始化变量。
这是一种标准行为,没有任何问题:您可以在这里查看完整的文档:(请参阅“使用方括号语法创建/修改”)
当然,您必须在所有代码中都知道它,当然,如果您事先知道数组的结构,您可以根据@FrankBe answer定义它,那么我们现在这个问题在哪里?我已经阅读了该部分,因为这里没有解释,所以我在这里问,事实上,这是由这句话解释的“如果$arr还不存在,它将被创建,因此这也是创建数组的另一种方法。“。如果您可以通过向数组中添加元素来创建数组,即,
$arr[]=…
,那么也可以创建子数组才有意义。另外,您的问题还可以;我只是指出了文档以供其他参考。
$arr[key] = value;
$arr[] = value;
// key may be an integer or string
// value may be any value of any type