MySQLのデータをPHPで多次元連想配列にしたい
MySQLのデータを多次元連想配列にする方法を教えて下さい。
下記のような多次元連想配列のデータがあります。
これと同様のMySQLに登録されたデータから多次元連想配列を作りたいと思います。
$test=
array(
array("id" => "1","kamoku" => "算数","tensu" => "70"),
array("id" => "2","kamoku" => "理科","tensu" => "88"),
array("id" => "3","kamoku" => "国語","tensu" => "90"),
);
print_r($test);
---print_r($test)の結果---------------------------------
Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) )
--------------------------------------------------------
これと同様のデータをMySQLに作成します。
テーブル名:test
列名:id,kamoku,tensu
MySQLからデータを取得
try
{
$dbh = new PDO($DSN , $DBUSER , $DBPASS);
$query = select * from test
$stmt = $dbh->prepare($query);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC))
{
$id = ($result['id']);
$kamoku = ($result['kamoku']);
$tensu = ($result['tensu']);
}
}
catch(PDOException $e)
{
print "Error!: " . $e->getMessage() . "<br>";
die();
}
このソースの中で何らかの処理をして
print_r($test);
を実行したときに
---print_r($test)の結果---------------------------------
Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) )
--------------------------------------------------------
というような、文頭で記載したものと同じ結果を得たいと思います。
while内で
print_r($result);を行うと1行ずつ下記のような連想配列
Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 )
が取得できているのでこれを連結させて
$test_sample=<<<EOF
array("id" => "1","kamoku" => "算数","tensu" => "70"),
array("id" => "2","kamoku" => "理科","tensu" => "88"),
array("id" => "3","kamoku" => "国語","tensu" => "90")
EOF;
という配列の中身は作ることができました。
(1)ケース1
$test=array($test_sample);
print_r($test);
としてもダメで、
Array ( [0] => array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") )
というようにうまく多次元連想配列になっていません。
(2)ケース2
$test='array('.$test_sample.')';
print_r(test);
としてみたところ、
array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90"))
というように配列ではなく単なる文字列として表示されてしまいます。
配列の中身を変数で扱う時には特別な記述法などがあるのでしょうか?
お礼
有難うございます、この様な書き方、foreachとifの使い方も分かりませんでした 大変感謝いたします。 「配列をテーブルの様に使用」もさほど問題ないようで安心しました。