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


How to dynamically initialize a 3d array in PHP?

我想创建一个 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)));
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))来获取样品。

这应该有效

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