Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建多维php数组而不声明_Php_Arrays - Fatal编程技术网

创建多维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

我注意到了这一点,不知道如何处理它

基本上,如果您使用子数组,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 = 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