在用添加值之前是否需要声明PHP数组?

$arr = array(); // is this line needed? $arr[] = 5; 

我知道它没有第一条线,但它通常包含在实践中。

是什么原因? 没有它不安全?

我知道你也可以这样做:

  $arr = array(5); 

但我正在谈论的情况下,你需要逐项添加项目。

如果您不声明新的数组,并且创build/更新数组的数据由于某种原因而失败,那么将来的代码将尝试使用该数组,因为该数组不会存在。

例如,如果数组没有声明,并且没有值被添加到foreach()foreach()会抛出一个错误。 但是,如果数组只是空的,就不会出现错误,就像您声明的那样。

只是想指出, arrays上的PHP文档实际上是在文档中谈到这一点。

从PHP网站,附带代码片段:

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

“如果$arr不存在,它将被创build,所以这也是创build数组的另一种方法。”

但是,正如其他答案所述…你应该为你的variables声明一个值,因为如果你不这样做,那么所有的坏事都会发生。

Php是一种松散types的语言。 这是完全可以接受的。 话虽如此,真正的程序员总是宣布他们的变数。

想想那些追随你的编码者! 如果你只是看到$arr[] = 5 ,你不知道$arr可能是什么,没有读取范围中的所有前面的代码。 明确的$arr = array()行清楚了。

这只是一个好习惯。 假设你在一个循环内追加数组(相当普遍的做法),然后访问该循环之外的数组。 如果没有数组声明,如果你从未进入循环,你的代码会抛出错误。

这取决于你的错误检查。 如果你有严格的错误报告,它会给你一个通知,但它应该仍然在技术上没有它。

当你需要它作为一个全局variables或者想要在不同的函数中重复使用相同的数组时,它是很好的

同意@djdy,只是一个替代我想发布:

 <?php // Passed array is empty, so we'll never have $items variable available. foreach (array() AS $item) $items[] = $item; isset($items) OR $items = array(); // Declare $items variable if it doesn't exist ?>