アプリ版:「スタンプのみでお礼する」機能のリリースについて

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"))

というように配列ではなく単なる文字列として表示されてしまいます。


配列の中身を変数で扱う時には特別な記述法などがあるのでしょうか?

A 回答 (1件)

while($result = $stmt->fetch(PDO::FETCH_ASSOC))


{
$test[]=$result;
}

的な処理でいけませんか?
    • good
    • 2
この回答へのお礼

yambejpさん

ご回答ありがとうございました。
求めている結果になりました。

$test[]=$result;
だけで処理できるんですね。
勉強になりました。

お礼日時:2012/01/24 00:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!