2011-07-07 13 views
28

私は配列が動的に作成されていることを知っています。事前に作成する必要はありませんが、2D配列ではどうしたらいいですか?同じ方法?PHPで空の2D配列を作成しますか?

(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

はあなたに何を指定することができますやろうとしている? あなたは、あなたはPHPではなく、伝統的な意味での2D配列を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

で多次元配列をループ作成しないでくださいすることができます。

単に次の配列の作成、実際には約$a = array(array());上記の提案:

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

したがって、$a[0][0] = 'test';は以下になりますが:

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

一見、それが動作するように見えます実際にはまだ2次元配列ではありません。 2番目の行(インデックス1)を使用しようとすると、この時点でPHPは通知を出します。例:$a[1]は(?array(array())は単にインデックス0の配列を作成することを覚えて)何も含まれていないため

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

これがあります。

これを機能させるには、もう一度$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 "2Dアレイ" を作成します。

+0

2次元アレイを使用しているときに私の空のエントリがどこから来たのか疑問に思った。変更された$ 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())"を使用すると、最初の位置に "空"要素を持つ2次元配列が作成されます。本当に空の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

関連する問題