[英]Creating multidimensional php arrays without declaring
我注意到了这一点,并且不确定如何使用它。
基本上,如果您使用子数组,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
// )
// )
// )
此行为记录在任何地方吗? 使用安全吗?
(我习惯于手动创建每个级别,这感觉很奇怪)
是的,此行为是预期的,并且也记录在手册中 :
$arr[key] = value; $arr[] = value; // key may be an integer or string // value may be any value of any type
如果$ arr还不存在,它将被创建 ,因此这也是创建array的另一种方法 。 但是不建议这样做,因为如果$ arr已经包含某个值(例如,来自请求变量的字符串),则该值将保留在该位置,并且[]实际上代表字符串访问运算符。 最好总是通过直接赋值来初始化变量。
它已保存,您可以使用它,但是我在声明时喜欢以下内容:
$moo = array(
'agagag' => array(
'sdfsdf' => array(
4654645
)
)
);
这是标准行为,没有任何问题:您可以在此处查看完整的文档: http : //php.net/manual/en/language.types.array.php (请参阅“使用方括号语法创建/修改” )。
当然,您必须在所有代码中都意识到这一点,当然,如果您事先知道数组的结构,则可以按照@Frankbeen答案定义它,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.