2011-12-16 102 views
0

可能重複:
How to create an empty array in PHP with predefined size?在PHP快速創建大型陣列

在基於C語言,你可以非常快速地創建,你可能在使用大型多維數組結合算法或其他東西的循環。像這樣:

int foo[50][40]; 

在PHP中,你怎麼能做到這一點?目前,我能想到的唯一方法是:

$bar = array(); 
for ($a = 0; $a<50; $a++) { 
    for ($b = 0; $b++; $b<40) { 
     $bar[$a][$b] = 0; 
    } 
} 
+0

@Polity真的 - 我沒有搜索,不是在尋找正確的事情,但 - 已投票決定關閉! – 2011-12-16 10:33:16

回答

2

在PHP中,你不必預先定義的數組的大小,你可以用動態數據添加它,就像這樣:

$bar = array(); 
for($i = 0;$i < 50;$i++) { 
    $bar[] = $i; 
} 

通過調用[]的$吧,你會表明應該創建一個新的密鑰,並且在這種情況下持有值$ i。

+0

QA已經在他的問題中發佈了此解決方案...... – Polity 2011-12-16 10:29:06

+0

@Polity並非完全適用。 OP假設陣列結構與C-way相似,我只是證明它不是。 – Oldskool 2011-12-16 10:30:59

0

在基於PHP的語言中,您不需要創建「保留」數組。
但只要你需要,就隨時添加你需要的任何數量的元素。

順便說一句,如果速度不是簡潔的代碼,而是執行的速度,PHP肯定是錯誤的選擇。

+1

在許多情況下,如果您沒有按照預定義的順序訪問索引 – Polity 2011-12-16 10:27:40

0

嘗試以下操作:

$bar = range(0, 50); 
foreach ($bar as $k => $v) { 
    $bar[$k] = range(0, 40); 
}; 
+0

試試 - 爲了什麼? – 2011-12-16 10:29:56

2

使用SplFixedArray將加快,截至(並使其佔用更少的內存)。

0

也許這可以幫助:

$b = array_fill(0,50,0); 
    $a = array_fill(0,50,$b); 
//and so on, depending on how many dimensions do you need