如何在PHP中动态初始化3d数组?

时间:2015-10-16 08:28:08

标签: php arrays

我想创建一个nxnxn大小的3d数组并用0填充它。

实施例

如果n = 3

输出

[
  [
    [0],[0],[0]
  ],
  [
    [0],[0],[0]
  ]
  ,
  [
    [0],[0],[0]
  ]
],
[
  [
    [0],[0],[0]
  ],
  [
    [0],[0],[0]
  ]
  ,
  [
    [0],[0],[0]
  ]
],
[
  [
    [0],[0],[0]
  ],
  [
    [0],[0],[0]
  ]
  ,
  [
    [0],[0],[0]
  ]
]

现在,我可以使用以下方式手动执行此操作:

$array = array_fill(0,3,array_fill(0,3,array_fill(0,3,0)));

但是,我需要动态定义数组。

如果n = 4,则3d数组将

$array = array_fill(0,4,array_fill(0,4,array_fill(0,4,array_fill(0,4,0)));

2 个答案:

答案 0 :(得分:1)

这应该有效

function getNDimensionalArray($n)
{
    $x = $n;
    $value = array();
    while ($x) {
        $value = array_fill(0, $n, $value);
        $x--;
    }
    return $value;
}

答案 1 :(得分:1)

function hypercube($n, $obj=0) {
  for ($i = $n; $i; $i--) {
    $obj = array_fill(0, $n, $obj);
  }
  return $obj;
}

注意:hypercube(3)将生成一个3x3x3的数组。您的示例显示了一个3x3x3x1的数组(由于[0]。您可以hypercube(3, array(0))来获取样本。