从我的C ++知识库中,我倾向于通过键入以下内容来初始化数组中的数组:
$foo = array()
或者我可以从Javascript带来这个自定义,无论如何,这是否有用?
因为这样做没有问题:
没有初始化它作为数组的$foo[45] = 'bar'
,我猜不是。
PS:标签改进非常好
答案 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');
不会。