如何在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