在用添加值之前是否需要声明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 ?>