如何在PHP中最容易地声明一个二维数组?

喜欢 :

declare int d[0..m, 0..n] 

以下是等效的,并产生一个二维数组:

 $array = array( array(0, 1, 2), array(3, 4, 5), ); 

要么

 $array = array(); $array[] = array(0, 1, 2); $array[] = array(3, 4, 5); 

你也可以通过指定数组的索引来创build一个关联数组,或者一个“散列表”数组。

 $array = array( 0 => array( 'name' => 'John Doe', 'email' => 'john@example.com' ), 1 => array( 'name' => 'Jane Doe', 'email' => 'jane@example.com' ), ); 

这相当于

 $array = array(); $array[0] = array(); $array[0]['name'] = 'John Doe'; $array[0]['email'] = 'john@example.com'; $array[1] = array(); $array[1]['name'] = 'Jane Doe'; $array[1]['email'] = 'jane@example.com'; 

只要申报? 你不需要。 只要确保variables存在:

 $d = array(); 

数组dynamicresize,并尝试将任何东西写入非exsistant元素创build它(并根据需要创build整个数组)

 $d[1][2] = 3; 

这对任何数量的维度是有效的,没有事先声明。

首先,PHP没有multidimensional array,它有数组数组。

其次,你可以写一个函数来做到这一点:

 function declare($m, $n, $value = 0) { return array_fill(0, $m, array_fill(0, $n, $value)); } 

或者对于更大的数组,所有值都是相同的:

 $m_by_n_array = array_fill(0, $n, array_fill(0, $m, $value); 

将会创build一个$m $n数组,其中所有设置都为$value

对于一个简单的“填充你去”类的解决scheme:

$foo = array(array());

这会给你一个灵活的伪二维数组,它可以容纳$ foo [ n ] [ n ],其中n <=∞(当然,受限于内存大小的限制,但是你可以得到我希望的想法)。 理论上讲,这可以扩展到创build尽可能多的子arrays。

据我所知,没有内置的PHP函数来做到这一点,你需要通过循环或通过自定义方法来做到这一点,recursion调用类似@Amber答案中的array_fill;

我假设你的意思是创build一个空的但是初始化数组的数组。 例如,你需要一个最终结果,如下面的一个3数组的数组

  $final_array = array(array(), array(), array()); 

这很简单,只是手动代码,但对于任意大小的数组,如3个数组的3个数组的数组,它开始变得复杂,以在使用之前初始化:

  $final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array())); 

…等等…

我感到沮丧。 有一个简单的方法来声明一个初始化数组的深度,而不用检查或抛出错误,这将是很好的。

而对于我来说,一个数组是否应该是稀疏的争论取决于上下文。

例如,如果未填充$ a [6] [9],则等同于使用“”或0填充的$ a [6] [9]。

 $r = array("arr1","arr2"); 

要回显你应该写的一个数组元素:

 echo $r[0]; echo $r[1]; 

输出将是: arr1 arr2