【问题标题】:Creating multidimensional php arrays without declaring创建多维php数组而不声明
【发布时间】:2015-08-09 19:52:12
【问题描述】:

我注意到了这一点,但不确定如何使用它。

基本上,如果你使用它们,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 arrays


【解决方案1】:

是的,这种行为是意料之中的,也记录在manual

$arr[key] = value;
$arr[] = value;
// key may be an integer or string
// value may be any value of any type

如果$arr 尚不存在,则会创建它,所以这也是创建数组的另一种方式。然而,这种做法是不鼓励的,因为如果 $arr 已经包含一些值(例如来自请求变量的字符串),那么这个值将保留在该位置并且 [] 实际上可能代表字符串访问运算符。 最好通过直接赋值来初始化变量。

【讨论】:

    【解决方案2】:

    它已保存,您可以使用它,但我更喜欢在声明时使用以下内容:

    $moo = array(
       'agagag' => array(
           'sdfsdf' => array(
                4654645
            )
        )
    );
    

    【讨论】:

      【解决方案3】:

      这是标准行为,没有任何问题:您可以在此处查看完整文档:http://php.net/manual/en/language.types.array.php(请参阅“使用方括号语法创建/修改”)。

      当然,您必须在所有代码中都知道它,当然,如果您事先知道数组的结构,您可以按照@Frankbeen 的回答来定义它,

      【讨论】:

      • 我已经阅读了该部分,因为那里没有解释,所以我在这里问
      • 其实就是用这句话来解释“如果$arr还不存在就创建,所以这也是创建数组的另一种方式”。如果您可以通过向其添加元素来创建数组,即$arr[] = ...,那么您也可以创建子数组才有意义。附言你的问题没问题;我只是指出了文档以供其他参考。
      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2011-04-02
      • 1970-01-01
      相关资源
      最近更新 更多