在 PHP 中创建一个空的二维数组?

问题描述 投票:0回答:8

我知道数组是动态创建的,提前创建它们并不是真正必要的,但是如何使用二维数组来做到这一点呢?同样的方法吗?

(for$j)
{
for($i)
    {
    $array[j][i] = "data";
    }
}

类似这样的事情吗?当然,显然是真正的 for 循环。

php arrays dynamic multidimensional-array
8个回答
54
投票

最简单的是,二维数组可以创建为:

<?php
    $emptyArray = array(array());
?>

或者从 PHP 5.4 开始,您也可以使用:

<?php
    $emptyArray = [[]];
?>

24
投票

您不会在 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“二维数组”的随机数。


2
投票

你能具体说明你想做什么吗? 您可以使用 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;
}

2
投票

如果我想创建一个空数组来处理文本文件中的行,我只需使用 $array = array();


2
投票

使用“array(array())”将创建一个第一个位置有“空”元素的二维数组。要创建真正空白的二维数组,需要将其删除。

<?php
    $emptyArray = array(array());  // Creates a 2D array with one empty element in $emptyArray[0]
    array_pop($emptyArray);        // Pops element[0] off the array
?>

2
投票

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
?>⁠ ⁠ ⁠ ⁠ ⁠ ⁠ 

1
投票
// 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/>";
}

0
投票

请记住,每当您使用

array(array())
嵌套函数或短数组语法
[[]]
时,两者都会创建一个第一个位置带有
empty
元素的二维数组。这可能会给您带来一些错误,因此我们需要将其删除。

我们如何删除
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);
?>
© www.soinside.com 2019 - 2024. All rights reserved.