创建2d数组的最简单方法是什么。我希望能够做类似的事情:
declare int d[0..m, 0..n]
Answers:
您还可以通过指定数组的索引来创建关联数组或类似“哈希表”的数组。
$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';
以下是等效项,并产生一个二维数组:
$array = array(
array(0, 1, 2),
array(3, 4, 5),
);
要么
$array = array();
$array[] = array(0, 1, 2);
$array[] = array(3, 4, 5);
只是声明?不用了 只要确保变量存在:
$d = array();
动态调整数组的大小,并尝试将任何内容写入不存在的元素以创建它(并在需要时创建整个数组)
$d[1][2] = 3;
在没有事先声明的情况下,这对于任何数量的尺寸均有效。
count
不过,您可以使用正确的尺寸,例如count($d[1])
,除非我误解了您的观点?
首先,PHP没有多维数组,它具有数组数组。
其次,您可以编写一个函数来执行此操作:
function declare($m, $n, $value = 0) {
return array_fill(0, $m, array_fill(0, $n, $value));
}
据我所知,没有内置的php函数可以做到这一点,您需要通过循环或通过递归调用@Amber答案中指示的array_fill之类的自定义方法来完成此操作。
我假设您的意思是创建一个空的但初始化的数组数组。例如,您希望最终结果像下面的3个数组一样:
$final_array = array(array(), array(), array());
这仅是简单的手工代码,但是对于任意大小的数组(如3个数组中的3个数组),在使用之前初始化起来变得很复杂:
$final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));
...等等...
我感到沮丧。最好有一种简单的方法来声明一个初始化的数组数组,该数组的深度可以使用而无需检查或抛出错误。
atli的回答确实帮助我理解了这一点。这是一个如何遍历二维数组的示例。此示例说明如何查找数组的已知名称的值,以及如何遍历在此找到的所有字段的foreach。希望对您有所帮助。
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
foreach ( $array as $groupid => $fields) {
echo "hi element ". $groupid . "\n";
echo ". name is ". $fields['name'] . "\n";
echo ". email is ". $fields['email'] . "\n";
$i = 0;
foreach ($fields as $field) {
echo ". field $i is ".$field . "\n";
$i++;
}
}
输出:
hi element 0
. name is John Doe
. email is john@example.com
. field 0 is John Doe
. field 1 is john@example.com
hi element 1
. name is Jane Doe
. email is jane@example.com
. field 0 is Jane Doe
. field 1 is jane@example.com
您可以尝试这样做,但是第二维值将等于索引:
$array = array_fill_keys(range(0,5), range(0,5));
对于空数组,要稍微复杂一点:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));