dbからデータを取得しています.SQLクエリとarray_map()をループして適切な値を取得しています。php array_mapが配列を正しくマッピングしていません
$CompleteData = array();
foreach ($Details as $d) {
$q = "SELECT "
. "`log`.`id` AS 'id', "
. "DATE_FORMAT(`log`.`timestamp`, '%d %b %Y %h:%i:%s %p') AS 'timestamp', "
. "`log`.`Author` AS 'Author', "
. "`log`.`message` AS 'message', "
. "`log`.`bookname` AS 'bookname' "
. "FROM `log` "
. "WHERE `log`.`detailId` = '" . $d . "' "
. "ORDER BY `log`.`timestamp` DESC, `log`.`id` DESC";
$qr = mysql_query($q, $sql);
for ($i = 0; $i < mysql_num_rows($qr); ++$i) {
$LogId[$i] = mysql_result($qr, $i, 'id');
$LogTimestamp[$i] = mysql_result($qr, $i, 'timestamp');
$LogAuthor[$i] = mysql_result($qr, $i, 'Author');
$LogMessage[$i] = mysql_result($qr, $i, 'shortmessage');
$Logbookname[$i] = mysql_result($qr, $i, 'bookname');
}
$CompleteData[$d] = array_map(null, $LogId, $LogTimestamp, $LogAuthor, $LogMessage, $Logbookname);
}
ここで、array_mapは必要に応じてデータをマッピングしていないため、出力は折りたたまれています。
DBにログインテーブル:
所望の出力:
しかしarray_map(null,array1,arrar3..)
で出力が
1番目の配列と2番目の配列などを組み合わせています。
私はアレイマップで間違っていると教えてもらえますか?
あなたは、配列を変更していないので、なぜあなたはarray_mapを使用していますか?連想配列はあなたの目的のために働くでしょうか?インデックスの代わりにカラム名を持つ配列を返します。 – geekasso
'array_map'と' for'は必要ありません。@MateiMihaiの答えを見てください。しかし、あなたのコードの問題は、 '$ LogId'や' $ LogTimestamp'のような配列を空にしていないので、最初の繰り返しの項目も含まれることです。 –