2011-07-07 54 views
28

我知道數組是動態創建的,並且提前創建它們並不是真的必要,但是如何用2D數組來做到這一點?一樣的方法?在PHP中創建一個空的二維數組?

(for$j) 
{ 
for($i) 
    { 
    $array[j][i] = "data"; 
    } 
} 

這樣的事情?當然,循環顯然是真實的。

+3

一個空的2維數組...'$陣列=陣列(陣列());' – JamesHalsall

+0

這樣似乎是正確的,如果你確定要填充空字符串N * M個數組倍。 –

+1

我不知道與downvotes交易是什麼。我看了又找不到答案,於是我問了一句。請原諒我嘗試學習如何使用php。 – Joshua

回答

39

其絕對簡單的,一個2D二維陣列可以被創建爲:

<?php 
    $emptyArray = array(array()); 
?> 

或者作爲PHP 5.4中,你還可以使用:

<?php 
    $emptyArray = [[]]; 
?> 
+0

謝謝。這就是我需要的。 – Joshua

+5

@Joshua沒問題。我認爲人們低估了,因爲他們不理解問題背後的推理。不是一個很好的理由downvote。這就是評論的目的。繼續提問... :) –

+8

Downvotes不會阻止我嘗試學習。 – Joshua

2

PHP documentation始終是開始這些基本問題的好方法。

<?php 
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); 

echo $arr["somearray"][6]; // 5 
echo $arr["somearray"][13]; // 9 
echo $arr["somearray"]["a"]; // 42 
?> 
+5

我查看了多維數組文檔,沒有創建空白文檔的示例。 – Joshua

1

你能指定你正試圖做什麼? 您可以通過與在foreach功能

$ary=array("subarr" => array("foo","bar")); 

foreach($ary as $a){ 
    foreach($a as $ary_sub){ 
    echo $ary_sub; 
    } 
} 

foreach($ary["subarr"] as $key=>$subval){ 
echo $subval; 
} 
21

不創建一個PHP二維數組,而不是傳統意義上的多維數組循環。

上面其實簡單地創建以下數組約$a = array(array());的建議:

$a = array(
    0 => array() 
); 

因此,$a[0][0] = 'test';會導致如下:

$a = array(
    0 => array(
     0 => 'test' 
    ) 
); 

乍一看,它看起來像它的工作原理,但實際上,這仍然不是一個二維數組。 當您嘗試使用第二行(索引1)時,此時PHP會發出通知。例如:

$a[1][0] = 'test2'; 

這是因爲$a[1]不包含任何東西(記住,array(array())簡單地創建索引爲0的數組?)。

對於它的工作,你需要再次做$a[1] = array();,或者如果你想避免指數,你可以做,$a[] = array();


$a = array(); // array of columns 
for($c=0; $c<5; $c++){ 
    $a[$c] = array(); // array of cells for column $c 
    for($r=0; $r<3; $r++){ 
     $a[$c][$r] = rand(); 
    } 
} 

上面的代碼建立隨機數的5×3 「二維數組」。

+0

我想知道使用2-dim數組時我的空條目來自哪裏。更改了$ arr [] = array();在函數的頂部到$ arr [$ id] = array();它在哪裏使用,一切都很好再 – RST

+0

謝謝!完美的答案! – lopata

2

如果我想創建一個空數組來處理來自文本文件的行,我只需要使用$ array = array();

1
// dynamic 2D array 

$twoD = array(array()); 
$val = 0; 

// fill the array 
for($r = 0; $r < 4; $r++) { 
    for($c = 0; $c < 4; $c++) 
     $twoD[$r][$c] = $val++; 
} 

// print the current value of $val 
echo $val."<br/>------------------<br/>"; 

// print the array 
for($r = 0; $r < 4; $r++) { 
    for($c = 0; $c < 4; $c++) 
     echo $twoD[$r][$c]; 
    echo "<br/>"; 
} 
2

使用「array(array())」將在第一個位置創建一個帶有「empty」元素的2D數組。要創建一個真正空白的二維數組,這需要刪除。

<?php 
    $emptyArray = array(array()); // Creates a 2D array with one empty element in $emptyArray[0] 
    array_pop($emptyArray);  // Pops element[0] off the array 
?> 
+0

謝謝你分享這個。我以爲我瘋了試圖找出我如何在[0]創建一個空白元素, – radleybobins