PHPの配列の組み方と、くり返し処理について質問があります。データベースからデータを抽出しましたが、最新のデータのみしか抽出できず、望み通りの配列が組めません。どのようにすれば、下記の例のようなデータを一つの配列にして、同じ処理をくり返し、一つの配列として組む事ができるのでしょうか?できれば下記のコードに補足したいです。ご教授ください、よろしくお願いします!

例)
Array(
Array([id]、[d_title]、[d_image]、[d_mes]、[d_date]),
Array([id]、[d_title]、[d_image]、[d_mes]、[d_date]),
Array([id]、[d_title]、[d_image]、[d_mes]、[d_date]),


)
========================================================
コード <最終的に抽出されたデータの変数名は$diarydataとしたい>
========================================================
$sql = "SELECT * FROM uploaddata ORDER BY id DESC";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");

while ($diarys = mysql_fetch_array($res, MYSQL_ASSOC)){
$diarys['id'];
$diarys['d_title'];
$diarys['d_image'];
$diarys['d_mes'];
$diarys['d_date'];
break;
}

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2007/04/04 23:50:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155

ポイント100pt

$data = Array();

print_r($data);

while( ... )

$data[] = Array(

'id' => $diarys['id'] ,

'd_title' => $diarys['d_title'],

'd_image' => $diarys['d_image'],

'd_mes' => $diarys['d_mes'],

'd_date'=> $diarys['d_date']

);

};

print_r($data);

foreach( $data as $key => &$value ) {

print $key . "," . $value['id'] . "," . $value['d_data'] ."\n";

};

http://jp2.php.net/manual/ja/control-structures.foreach.php

id:paper-knife

ありがとうございました。

全然できなくてどうしようかと思っていました。

またの機会の時にも、よろしくお願いします!

2007/04/04 23:47:30

その他の回答2件)

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155ここでベストアンサー

ポイント100pt

$data = Array();

print_r($data);

while( ... )

$data[] = Array(

'id' => $diarys['id'] ,

'd_title' => $diarys['d_title'],

'd_image' => $diarys['d_image'],

'd_mes' => $diarys['d_mes'],

'd_date'=> $diarys['d_date']

);

};

print_r($data);

foreach( $data as $key => &$value ) {

print $key . "," . $value['id'] . "," . $value['d_data'] ."\n";

};

http://jp2.php.net/manual/ja/control-structures.foreach.php

id:paper-knife

ありがとうございました。

全然できなくてどうしようかと思っていました。

またの機会の時にも、よろしくお願いします!

2007/04/04 23:47:30
id:Mook No.2

回答回数1314ベストアンサー獲得回数393

ポイント20pt

下記のような感じでどうでしょうか。

array_push

========================================================
コード <最終的に抽出されたデータの変数名は$diarydataとしたい>
========================================================
$sql = "SELECT * FROM uploaddata ORDER BY id DESC";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");

$diarydata = array();

while ($diarys = mysql_fetch_array($res, MYSQL_ASSOC)){
	array_push( $diarydata, array( $diarys['id'], $diarys['d_title'], $diarys['d_image'], $diarys['d_mes'], $diarys['d_date'] ) );
 // break; ここで break したら、ループの初回で終了してしまいます。
}

print_r( $diarydata );
id:paper-knife

ありがとうございます!参考になりました。

2007/04/04 23:45:38
id:hinaminet No.3

回答回数2ベストアンサー獲得回数0

ポイント13pt

もしかしてと思ったのですが

$diarys['id'];

$diarys['d_title'];

$diarys['d_image'];

$diarys['d_mes'];

$diarys['d_date'];

$diarys[]['id'];

$diarys[]['d_title'];

$diarys[]['d_image'];

$diarys[]['d_mes'];

$diarys[]['d_date'];

にしたら取れたりしませんか?

while文の中で配列を上書きしてしまっているように見えます。

http://phpspot.net/php/man/php/function.mysql-fetch-assoc.html

URLはあまり意味のない参考です

id:paper-knife

Fatal error: Cannot use [] for reading in

のエラーが出てしまいました。。。

2007/04/04 23:34:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません