前提・実現したいこと
シフト表を作成しています。
DBからsqlで取得した配列を希望のhtmlに表示できません。
日付、名前を元に出退勤時間を縦に表示したいです。
該当のソースコード
array(2) { ["田中"]=> array(2) { [0]=> array(5) { ["user_id"]=> string(1) "1" ["user_name"]=> string(6) "田中" ["start"]=> string(5) "08:00" ["last"]=> string(5) "18:00" ["date"]=> string(10) "2019/01/01" } [1]=> array(5) { ["user_id"]=> string(1) "1" ["user_name"]=> string(6) "田中" ["start"]=> string(5) "08:00" ["last"]=> string(5) "18:00" ["date"]=> string(10) "2019/01/02" } } ["佐藤"]=> array(2) { [0]=> array(5) { ["user_id"]=> string(1) "2" ["user_name"]=> string(6) "佐藤" ["start"]=> string(5) "08:00" ["last"]=> string(5) "18:00" ["date"]=> string(10) "2019/01/01" } [1]=> array(5) { ["user_id"]=> string(1) "2" ["user_name"]=> string(6) "佐藤" ["start"]=> string(5) "08:00" ["last"]=> string(5) "18:00" ["date"]=> string(10) "2019/01/02" } } }
上記を下記のように表示させたいです。
<table border="1"> <tr> <td>日付</td><td>田中</td><td>佐藤</td> </tr> <tr> <td>2019/01/01</td><td>08:00~18:00</td><td>08:00~18:00</td> </tr> <tr> <td>2019/01/02</td><td>08:00~18:00</td><td>08:00~18:00</td> </tr> </table>
発生している問題・エラーメッセージ
横に表示となってしまう <table border="1"> <tr> <td>日付</td> <?php foreach ($hoge as $key => $value): ?> <td><?=$key?></td> <?php endforeach; ?> </tr> <tr> <?php foreach ($hoge as $key => $value): ?> <?php foreach ($value as $key2 => $value2): ?> <td><?=$value2["date"]?></td><td><?=$value2["start"]?>~<?=$value2["last"]?></td> <?php endforeach; ?> <?php endforeach; ?> </tr> </table>
配列作成時点で誤りがあるのかhtml tableへの表示方法などございましたらご教授頂けますと幸いです。
宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
win10
PHP 7.2.9
追記
// user_idとuser_nameのDBテーブル $sql = "SELECT `user_name`, `user_id` FROM `user_data`"; $stmt = $db->query($sql); foreach ($stmt as $row) { $user_data[] = array( 'user_id' => $row['user_id'], 'user_name' => $row['user_name'], );} // user_idと出退勤情報のdbテーブル $sql = "SELECT `user_id`,`date`,`start`,`last`FROM `input_data2`"; $stmt = $db->query($sql); foreach ($stmt as $row) { $syukkin_data[] = array( 'user_id' => $row['user_id'], 'date' => $row['date'], 'start' => $row['start'], 'last' => $row['last'], );}
// 2つのdbテーブルからuser_idをもとに表示用の配列を作成 foreach ($user_data as $key => $value) { foreach ($syukkin_data as $key2 => $value2) { if($value['user_id'] == $value2['user_id']){ $hoge[$value['user_name']][] =array( 'user_id' => $value2['user_id'], 'date' => $value2['date'], 'start' => $value2['start'], 'last' => $value2['last'], 'user_name' => $value['user_name'], ); } } } // var_export(hoge); array ( '田中' => array ( 0 => array ( 'user_id' => '1', 'date' => '2020-01-01', 'start' => '08:00', 'last' => '18:00', 'user_name' => '田中', ), 1 => array ( 'user_id' => '1', 'date' => '2020-01-02', 'start' => '08:00', 'last' => '18:00', 'user_name' => '田中', ), ), '佐藤' => array ( 0 => array ( 'user_id' => '2', 'date' => '2020-01-01', 'start' => '08:00', 'last' => '18:00', 'user_name' => '佐藤', ), 1 => array ( 'user_id' => '2', 'date' => '2020-01-01', 'start' => '08:00', 'last' => '18:00', 'user_name' => '佐藤', ), ),
回答1件
あなたの回答
tips
プレビュー