2012-04-18 20 views
7

whileループで連想配列の配列を作成したいと思います。 whileループの各繰り返しで、配列に新しい要素を追加したいと思います。私はそれをどのようにすることができますか?その後、この配列をforeachに渡してデータを出力したいと思います。私は今このコード部分を持っていますが、明らかに何かが間違っています。PHPで連想配列の配列を作成する

while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 
          } 
+0

私は2つの配列を持っています。それらを1つの変数に入れたいと思います。私はこのコード行を使用しています。$ finalarray = $ _SESSION ['SESS_ARRAY'] + $ myarray ;.しかし、それは私に致命的なエラーを返します。手伝って頂けますか? – anna

+0

array_merge()を使って解決しました。 – anna

答えて

16

ANを追加するには配列の最後の要素を使用する[]
例:

​​
+0

ありがとう!私は変更を加えていたので、これを戻すのを忘れてしまった。 – anna

+0

私は2つの配列を持っているので、それらを1つの変数に入れたいと思います。私はこのコード行を使用しています。$ finalarray = $ _SESSION ['SESS_ARRAY'] + $ myarray ;.しかし、それは私に致命的なエラーを返します。手伝って頂けますか? – anna

+0

2つの配列を追加することはできません。上記のコードを使用してください。結果は次のようになります。$ finalarray = array(); $ final配列[] = $ _SESSION ['SESS_ARRAY']; $ finalarray [] = $ myarray; – laltin

1

は明らか$row2へのアクセスは間違って見えたので、私はあなたがそれから読みたいときにここに続いて、後に右

$myarray = array(); 
while($row2 = mysql_fetch_array($result)) { 
    // append something to your array with square brackets [] 
    $myarray[] = array("id"=> $row2['id'], "name" => $row2['name'], "text"=>$row2['text']); 


    // or to maker this even shorter you could do 
    $myarray[] = $row2; // ... because it has the same array key names 
} 

することを想定:

foreach($myarray as $val) { 
    echo $val['name'].' (ID: '.$val['id'].') wrote following text: '.$val['text']; 
} 
3

あなたは、各反復で$ myarrayのに追加しようとしている場合、このようにそれを実行します。

​​

またはこのような:明らか

array_push($myarray, array("id"=>$theid, "name"=>name($id), "text"=>$row2[text])); 
6

、大丈夫、最初に離れてそれを選びますそう学ぶべきものがあります:

while($row2 = mysql_fetch_array($result)) 
{ 
    ... 
} 

この部分を見て大丈夫、のは、ループ内を見てみましょう:

$myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 

複数の点があります。おそらく最も重要なことは、ループ内にあるように、各繰り返しで$myarrayを上書きすることです。代わりに配列に追加したいとします。このやろう:その後

$myarray = array(); # initialize the array first! 
while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray[] = $row2; # add the row 
} 

することができます、それは基本的に動作することを証明への出力、それを:

var_dump($myarray); 

あなたのすべての行を含む配列を示しています。それだけであなたが興味のある分野を返すようにするには、その後にのみ、データベースのクエリを変更する必要が

データベースで、あなたにも、配列を操作できることを行うことができない場合:。

$myarray = array(); # initialize the array first! 
while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray[] = array(
     "id" => $theid, 
     "name" => name($id), 
     "text" => $row2['text'] 
    ); 
} 
var_dump($myarray); 

結果は必要なように見えます。出力するには$myarray

foreach ($myarray as $number => $row) 
{ 
    echo '<div>Number ', $number, ':<dl>'; 
    foreach ($row as $k => $v) 
    { 
     printf("<dt>%s</dt><dd>%s</dd>\n", $k, htmlspecialchars($v)); 
    } 
    echo '</dl></div>' 
}