Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用array()而不使用任何参数吗? 从我的C++知识库中,我倾向于通过键入初始化PHP数组: $foo=array() 或者我可以从Javascript中带来这个定制,不管怎样,这有什么用处吗? 因为这样做没有问题: $foo[45]=“bar”如果不将其初始化为数组,我想不会_Php_Arrays_Initialization - Fatal编程技术网

调用array()而不使用任何参数吗? 从我的C++知识库中,我倾向于通过键入初始化PHP数组: $foo=array() 或者我可以从Javascript中带来这个定制,不管怎样,这有什么用处吗? 因为这样做没有问题: $foo[45]=“bar”如果不将其初始化为数组,我想不会

调用array()而不使用任何参数吗? 从我的C++知识库中,我倾向于通过键入初始化PHP数组: $foo=array() 或者我可以从Javascript中带来这个定制,不管怎样,这有什么用处吗? 因为这样做没有问题: $foo[45]=“bar”如果不将其初始化为数组,我想不会,php,arrays,initialization,Php,Arrays,Initialization,附言:标签的改进非常好任何一种方法都是完全可以接受的。如前所述,这种使用array()构造的实践通常是从另一种语言继承而来的,在这种语言中,在填充之前进行初始化。使用PHP,您可以初始化一个空数组,然后在以后填充,或者只需通过赋值建立一个数组,例如$variableName[0]=“x”@petruz,这是最好的方法,它不仅可以让您避免收到令人讨厌的PHP错误消息,这些错误消息说函数希望参数是一个数组,而且这是编写代码的最好方法。我在使用变量之前初始化它在使用之前初始化变量是一个好的做法。即使它

附言:标签的改进非常好

任何一种方法都是完全可以接受的。如前所述,这种使用
array()
构造的实践通常是从另一种语言继承而来的,在这种语言中,在填充之前进行初始化。使用PHP,您可以初始化一个空数组,然后在以后填充,或者只需通过赋值建立一个数组,例如
$variableName[0]=“x”

@petruz,这是最好的方法,它不仅可以让您避免收到令人讨厌的PHP错误消息,这些错误消息说函数希望参数是一个数组,而且这是编写代码的最好方法。我在使用变量之前初始化它

在使用之前初始化变量是一个好的做法。即使它不是必需的。

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

此外,它还将防止
'Variable'$a'未设置
的通知,或
传递给foreach的无效参数
,以防您实际上没有为数组元素分配任何值。

我遇到了问题(在旧版本的PHP中,最近没有尝试过)当我用array_push或其他东西处理数组时,PHP向我咆哮。一般来说,这是不必要的,但它会更安全,特别是当你处理遗留代码时;也许你期望$foo是一个数组,但它实际上是一个布尔值?坏事情接踵而至。

初始化:

$myArray = array();
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;
没有初始化:

$myArray = array();
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;
在第一种情况下,如果$myBoolean为false,那么很明显会发生什么情况。在第二种情况下,如果$myBoolean为false,那么php可能会在稍后尝试使用$myArray时发出警告。显然,这是一种简化的情况,但在复杂的情况下,“if”可能是下几行和/或甚至不存在,直到有人出现并添加它之后才意识到阵列未初始化


虽然没有必要,但我发现初始化不足会在复杂函数中导致不明显的逻辑问题,这些函数随着时间的推移已经被修改了很多。

这是一种很好的做法。迟早您会遇到这样的情况,您可能希望执行以下操作:

array_push($foo, '45');
将发出通知,鉴于:

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

不会。

显式初始化数组很好,而且这是清空数组的一种快速方法。首先使用
array()
定义数组时,性能优势如何?@dotweb:我不希望从中获得任何性能优势(如果创建了数组,性能甚至可能会有一些(可以忽略不计)的降低,但之后从未使用过).好的。我只是想知道,因为在JavaScript中有一个。+1当我看到像
$foo[45]=“bar”
这样的东西时,我想到的第一件事是“哪里初始化了
$foo
,它到底是什么?”对,我用一些ARAYAY函数和FURACH来解决这个问题,但是我猜如果PHP是一种松散的语言,那么不妨把NULL看作一个空数组,然后把它推到它上面。