如何在php中创建固定长度的多维数组?

时间:2016-12-05 14:44:04

标签: php

int twodim[5][8]; int threedim[3][5][8];

如何在c ++中创建固定长度的多维数组?

1 个答案:

答案 0 :(得分:0)

它不像PHP那样,但您可以使用此函数(基于Grzegorz'SplFixedArray提示)生成任意维度的固定大小的数组。

function createFixedArray() {
  $args = func_get_arg(0);
  $array = new SplFixedArray($args[0]);

  if (isset($args[1])) {
    $newArgs = array_splice($args, 1);
    for ($i=0; $i<$args[0]; $i++) {
      $array[$i] = createFixedArray($newArgs);
    }
  }
  return $array;
}

使用示例:

$fixedArray = createFixedArray(array(2, 2, 2));

$fixedArray[0][0][0] = 0;
$fixedArray[0][0][1] = 1;

$fixedArray[0][1][0] = 1;
$fixedArray[0][1][1] = 0;

$fixedArray[1][0][0] = 1;
$fixedArray[1][0][1] = 0;

$fixedArray[1][1][0] = 0;
$fixedArray[1][1][1] = 1;

var_dump($fixedArray);

生成

object(SplFixedArray)#1 (2) {
  [0]=>
  object(SplFixedArray)#2 (2) {
    [0]=>
    object(SplFixedArray)#3 (2) {
      [0]=>
      int(0)
      [1]=>
      int(1)
    }
    [1]=>
    object(SplFixedArray)#4 (2) {
      [0]=>
      int(1)
      [1]=>
      int(0)
    }
  }
  [1]=>
  object(SplFixedArray)#5 (2) {
    [0]=>
    object(SplFixedArray)#6 (2) {
      [0]=>
      int(1)
      [1]=>
      int(0)
    }
    [1]=>
    object(SplFixedArray)#7 (2) {
      [0]=>
      int(0)
      [1]=>
      int(1)
    }
  }
}