是否有必要在追加数组之前定义它?

时间:2018-02-01 21:27:22

标签: php multidimensional-array append isset

琐碎的问题。

假设我有以下代码

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$words = ['Apple', 'Avocado', 'Banana', 'Blueberry'];

$dict = [];
// build a dictionary keyed on the first letter
foreach ($words as $word) {
    $letter = $word[0];
    // is this condition necessary?
    if (!isset($dict[$letter])) {
        $dict[$letter] = [];
    }
    $dict[$letter][] = $word;
}
?>

通常当我构建一个字典时,在附加一个条目之前,我确保该数组存在,如我的例子中所示。

我一直认为会出现警告,但事实并非如此。

IF条件是否必要?

1 个答案:

答案 0 :(得分:1)

来自official documentation on arrays(强调我的):

  

$arr[key] = value;

     

$arr[] = value;

     

// key may be an integer or string

     

// value may be any value of any type

     

如果$arr尚未存在,则会创建它,因此这也是一个   另一种创建数组的方法。然而,这种做法   气馁,因为如果$arr已经包含某些值(例如字符串)   从请求变量)然后这个值将保留在该位置[]   实际上可能代表字符串访问运算符。 总是更好   通过直接分配初始化变量。

不会产生任何警告,但为了清楚起见,最好通过直接分配进行初始化,因为您一直在做。