我知道数组是动态创建的,提前创建它们并不是必要的,但如何在 2D 数组中进行这样的操作呢?可以用同样的方法吗?
(for$j)
{
for($i)
{
$array[j][i] = "data";
}
}
像这样的吗?当然,实际情况中是使用真正的for循环。
我知道数组是动态创建的,提前创建它们并不是必要的,但如何在 2D 数组中进行这样的操作呢?可以用同样的方法吗?
(for$j)
{
for($i)
{
$array[j][i] = "data";
}
}
像这样的吗?当然,实际情况中是使用真正的for循环。
在最简单的情况下,可以创建一个二维数组:
<?php
$emptyArray = array(array());
?>
从PHP 5.4开始,您也可以使用以下方法:
<?php
$emptyArray = [[]];
?>
在PHP中,传统意义上并不创建二维数组。
上面的建议关于$a = array(array());
实际上只是创建了以下数组:
$a = array(
0 => array( )
);
因此,$a[0][0] = 'test';
会导致以下结果:
$a = array(
0 => array(
0 => 'test'
)
);
乍一看,它似乎能够工作,但事实上,这仍然不是一个二维数组。当您尝试使用第二行(索引1)时,PHP会抛出一个警告。例如:
$a[1][0] = 'test2';
这是因为$a[1]
中没有任何内容(请记住array(array())
只是在索引0处创建一个数组)。要使其工作,您需要再次执行$a[1] = array();
,或者如果您想避免索引,可以执行$a[] = array();
。
示例
$a = array(); // array of columns
for($c=0; $c<5; $c++){
$a[$c] = array(); // array of cells for column $c
for($r=0; $r<3; $r++){
$a[$c][$r] = rand();
}
}
上述代码创建了一个5x3的“二维数组”,其中包含随机数。
PHP文档通常是解决这类基础问题的好方法。
<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));
echo $arr["somearray"][6]; // 5
echo $arr["somearray"][13]; // 9
echo $arr["somearray"]["a"]; // 42
?>
请说明您想要做什么?您可以使用foreach函数遍历多维数组。
$ary=array( "subarr" => array("foo","bar") );
foreach($ary as $a){
foreach($a as $ary_sub){
echo $ary_sub;
}
}
或者
foreach($ary["subarr"] as $key=>$subval){
echo $subval;
}
<?php
$emptyArray = array(array()); // Creates a 2D array with one empty element in $emptyArray[0]
array_pop($emptyArray); // Pops element[0] off the array
?>
// dynamic 2D array
$twoD = array(array());
$val = 0;
// fill the array
for($r = 0; $r < 4; $r++) {
for($c = 0; $c < 4; $c++)
$twoD[$r][$c] = $val++;
}
// print the current value of $val
echo $val."<br/>------------------<br/>";
// print the array
for($r = 0; $r < 4; $r++) {
for($c = 0; $c < 4; $c++)
echo $twoD[$r][$c];
echo "<br/>";
}
请记住,每当您使用array(array())
嵌套函数或短数组语法[[]]
时,都会创建一个带有第一个位置上的empty
元素的2D数组。这可能会导致一些错误,因此我们需要将其删除。
empty
元素?很简单,只需调用array_pop()
方法弹出数组中的element[0]
即可,如下所示:
<?php
$a = array(array());
echo 'Before removing the empty element: \n'
print_r($a);
array_pop($a);
print_r($a);
$b = [[]];
echo 'Before removing the empty element: \n'
print_r($b);
array_pop($b);
print_r($b);
?>
$array = array(array());
- JamesHalsall