在PHP中创建一个空的2D数组?

Jos*_*hua 32 php arrays dynamic multidimensional-array

我知道数组是动态创建的,并且提前创建它们并不是必需的,但是如何用2D数组做到这一点?一样的方法?

(for$j)
{
for($i)
    {
    $array[j][i] = "data";
    }
}
Run Code Online (Sandbox Code Playgroud)

那样的东西?当然,显然是真正的循环.

Bre*_*len 48

在绝对最简单的情况下,可以创建2D维数组:

<?php
    $emptyArray = array(array());
?>
Run Code Online (Sandbox Code Playgroud)

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

<?php
    $emptyArray = [[]];
?>
Run Code Online (Sandbox Code Playgroud)

  • Downvotes不会阻止我尝试学习. (9认同)
  • @Joshua没问题.我认为人们被低估了,因为他们不理解问题背后的原因.downvote不是一个好理由.这就是评论的意思.继续问问题...... :) (5认同)

Chr*_*ian 21

您不在PHP中创建二维数组,而不是传统意义上的数组.

以上建议$a = array(array());实际上只是创建以下数组:

$a = array(
    0 => array( )
);
Run Code Online (Sandbox Code Playgroud)

因此,$a[0][0] = 'test';会导致以下结果:

$a = array(
    0 => array(
        0 => 'test'
    )
);
Run Code Online (Sandbox Code Playgroud)

乍一看,它看起来很有效,但事实上,这仍然不是一个二维数组.当您尝试使用第二行(索引1)时,此时,PHP会发出通知.例如:

$a[1][0] = 'test2';
Run Code Online (Sandbox Code Playgroud)

这是因为$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();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了一个随机数的5x3"2d数组".