2016-12-05 116 views
-1

int twodim[5][8]; int threedim[3][5][8];如何在php中創建固定長度的多維數組?

如何在php中創建固定長度的多維數組,如我們在C++中創建的?

+0

很抱歉,但目前還不清楚是什麼,你居然問。 – arkascha

+0

PHP數組是動態的,你不需要聲明它們,也沒有固定的大小。 – Devon

+0

請注意,php作爲非聲明性編程語言不使用嚴格的類型。它遵循更加動態的方法,數組和對象不僅可以在值中進行修改,而且可以在「即時」結構中進行修改。 – arkascha

回答

2

要建立固定的數組,你應該使用SplFixedArrayStandard PHP Library擴展:

的SplFixedArray類提供陣列的主要功能。 SplFixedArray和普通PHP數組之間的主要區別在於SplFixedArray具有固定長度並且只允許範圍內的整數作爲索引。優點是它允許更快的數組實現。

+0

親愛的我們不能使用SplFixedArray創建多維數組。 –

+0

什麼是阻止您嵌套SplFixedArray創建多維數組? –

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) 
    } 
    } 
} 
+0

據我所知,在運行時創建數組需要很多時間,因爲每次我們使用新建數組時,它將刪除數組佔用的舊內存,然後在新內存位置創建新大小的數組,並複製和粘貼數組數據。我的代碼可能會生成巨大的數組,你認爲這將是一個好主意,在運行時生成大尺寸數組....正如我告訴我想創建固定的多日。數組,但不是在運行時... –

+0

用你自己的數據運行一些測試,看看它如何工作處理和內存明智。您的數據和設置在問題中不明確,並且超出了它的範圍。 –