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

问题描述:

int twodim[5][8]; int threedim[3][5][8];如何在php中创建固定长度的多维数组?

如何在php中创建固定长度的多维数组,如我们在C++中创建的?

+0

很抱歉,但目前还不清楚是什么,你居然问。 – arkascha

+0

PHP数组是动态的,你不需要声明它们,也没有固定的大小。 – Devon

+0

请注意,php作为非声明性编程语言不使用严格的类型。它遵循更加动态的方法,数组和对象不仅可以在值中进行修改,而且可以在“即时”结构中进行修改。 – arkascha

要建立固定的数组,你应该使用SplFixedArrayStandard PHP Library扩展:

的SplFixedArray类提供阵列的主要功能。 SplFixedArray和普通PHP数组之间的主要区别在于SplFixedArray具有固定长度并且只允许范围内的整数作为索引。优点是它允许更快的数组实现。

+0

亲爱的我们不能使用SplFixedArray创建多维数组。 –

+0

什么是阻止您嵌套SplFixedArray创建多维数组? –

它不是很像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) 
    } 
    } 
} 
+0

据我所知,在运行时创建数组需要很多时间,因为每次我们使用新建数组时,它将删除数组占用的旧内存,然后在新内存位置创建新大小的数组,并复制和粘贴数组数据。我的代码可能会生成巨大的数组,你认为这将是一个好主意,在运行时生成大尺寸数组....正如我告诉我想创建固定的多日。数组,但不是在运行时... –

+0

用你自己的数据运行一些测试,看看它如何工作处理和内存明智。您的数据和设置在问题中不明确,并且超出了它的范围。 –