在某些其他语言(例如AS3)中,已经注意到,由于对象创建和实例化的原因,如果像这样做var foo =[]而不是var foo = new array(),初始化一个新数组会更快。我想知道在PHP中是否有类似的东西?

class Foo {
    private $arr = array(); // is there another / better way?
}

当前回答

$myArray = []; 

创建空数组。

你可以稍后将值推入数组,如下所示:

$myArray[] = "tree";
$myArray[] = "house";
$myArray[] = "dog";

此时,$myArray包含“树”,“房子”和“狗”。上面的每个命令都附加到数组中,保留已经存在的项。

由于来自其他语言,这种添加数组的方式对我来说似乎很奇怪。我期望必须做一些像$myArray += "dog"之类的事情…或者像Visual Basic集合那样的"add()"方法。但是这种直接附加语法当然是简短和方便的。

你实际上必须使用unset()函数来删除项:

unset($myArray[1]); 

... 将从数组中删除“house”(数组是从零开始的)。

unset($myArray); 

... 会摧毁整个阵列。

需要明确的是,添加到数组的空方括号语法只是告诉PHP自动为每个值分配索引的一种方式,而不是YOU分配索引。实际上,PHP是这样做的:

$myArray[0] = "tree";
$myArray[1] = "house";
$myArray[2] = "dog";

如果您愿意,您可以自己分配索引,您可以使用任何您想要的数字。您还可以为某些项目分配索引号,而不是其他项目。如果这样做,PHP将填充缺少的索引号,从分配的最大索引号开始递增。

如果你这样做:

$myArray[10] = "tree";
$myArray[20] = "house";
$myArray[] = "dog";

... “狗”一项的索引编号为21。PHP不为增量索引分配做智能模式匹配,因此它不会知道您可能希望它为“dog”分配索引为30。可以使用其他函数为数组指定增量模式。我不会在这里详细介绍,但都在PHP文档中。

其他回答

初始化一个简单数组:

<?php $array1=array(10,20,30,40,50); ?>

在array中初始化array:

<?php  $array2=array(6,"santosh","rahul",array("x","y","z")); ?>

来源:源代码

$myArray = []; 

创建空数组。

你可以稍后将值推入数组,如下所示:

$myArray[] = "tree";
$myArray[] = "house";
$myArray[] = "dog";

此时,$myArray包含“树”,“房子”和“狗”。上面的每个命令都附加到数组中,保留已经存在的项。

由于来自其他语言,这种添加数组的方式对我来说似乎很奇怪。我期望必须做一些像$myArray += "dog"之类的事情…或者像Visual Basic集合那样的"add()"方法。但是这种直接附加语法当然是简短和方便的。

你实际上必须使用unset()函数来删除项:

unset($myArray[1]); 

... 将从数组中删除“house”(数组是从零开始的)。

unset($myArray); 

... 会摧毁整个阵列。

需要明确的是,添加到数组的空方括号语法只是告诉PHP自动为每个值分配索引的一种方式,而不是YOU分配索引。实际上,PHP是这样做的:

$myArray[0] = "tree";
$myArray[1] = "house";
$myArray[2] = "dog";

如果您愿意,您可以自己分配索引,您可以使用任何您想要的数字。您还可以为某些项目分配索引号,而不是其他项目。如果这样做,PHP将填充缺少的索引号,从分配的最大索引号开始递增。

如果你这样做:

$myArray[10] = "tree";
$myArray[20] = "house";
$myArray[] = "dog";

... “狗”一项的索引编号为21。PHP不为增量索引分配做智能模式匹配,因此它不会知道您可能希望它为“dog”分配索引为30。可以使用其他函数为数组指定增量模式。我不会在这里详细介绍,但都在PHP文档中。

没有别的办法,所以这是最好的办法。

编辑:这个答案在PHP 5.4及更高版本后无效。

在PHP中数组就是数组;这里没有对原语和对象的考虑,因此没有可比的优化。

在PHP 5.4之前:

$myArray = array();

PHP 5.4及以上版本

$myArray = [];