创建多维php数组而不声明

时间:2015-08-09 19:52:13

标签: 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
//     )
//   )
// )

这种行为是否记录在任何地方?使用安全吗?

(我以前手动创建每个级别,这感觉很奇怪)

3 个答案:

答案 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的答案定义它,