调用array()没有任何使用的参数?

时间:2011-08-11 14:54:32

标签: php arrays initialization

从我的C ++知识库中,我倾向于通过键入以下内容来初始化数组中的数组:
$foo = array()
或者我可以从Javascript带来这个自定义,无论如何,这是否有用? 因为这样做没有问题:
没有初始化它作为数组的$foo[45] = 'bar',我猜不是。

PS:标签改进非常好

7 个答案:

答案 0 :(得分:6)

是的。至少在提高代码的可读性方面(这样你就不必怀疑'$foo来自哪里?它是空的,还是其中有什么东西?`

此外,它会阻止'Variable '$a' is not set通知,或Invalid argument passed to foreach,以防您实际上没有为数组元素指定任何值。

答案 1 :(得分:1)

任何一种方法都是完全可以接受的。如上所述,使用array()构造的这种做法通常是在填充之前初始化的另一种语言中继承的。使用PHP,您可以初始化一个空数组,然后再填充,或者您只需按分配建立一个数组,例如$variableName[0] = "x";

答案 2 :(得分:1)

@petruz,这是做到这一点的最好方法,不仅它会让你免受讨厌的PHP错误消息,说明函数需要参数是一个数组,但是,恕我直言,这是编写代码的最佳方式。我在使用它之前初始化一个变量

答案 3 :(得分:1)

使用前初始化变量是一种很好的做法。即使不是必需的。

答案 4 :(得分:1)

我遇到了问题(在旧版本的PHP中,最近没有尝试过),我在使用array_push或其他东西在数组上进行操作,并且PHP对我咆哮。作为一般规则,它没有必要,但它可以更安全,特别是如果你正在处理遗留代码;也许你期望$ foo成为一个数组,但它实际上是一个布尔值?随之而来的是坏事。

答案 5 :(得分:1)

初始化:

$myArray = array();
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;

没有初始化:

if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;

在第一种情况下,如果$ myBoolean为false,很明显你想要发生什么。在第二种情况下,它不是,并且当你稍后尝试使用$ myArray时,php可能会发出警告。显然这是一个简化的情况,但在一个复杂的情况下,“if”可能是几行和/或甚至不存在,直到有人出现并稍后添加它而没有意识到数组未初始化。

虽然没有必要,但我发现缺少初始化导致在复杂函数中出现非显而易见的逻辑问题,这些问题随着时间的推移而被大量修改。

答案 6 :(得分:1)

这是一个很好的做法。迟早你会遇到一些你可能想要这样做的情况:

array_push($foo, '45');

将发出通知,而:

$foo = array();
array_push($foo, '45');

不会。