下記のソースは、書籍(気づけばプロ並みPHP)を参考に作成したショッピングカートの買い物かごにあたる部分の処理です。
foreach文を使って、データベース上にある商品をとりだし、foreach文の中で商品を表示しています。
しかし参考書には、foreach文で商品を表示することはよくないのでforeachから分離し別途for文で表示するように書いてありました。理由は、「表示したい配列が一つならforeachで構わないが、配列変数が複数あるためfor文を使うべき」とのことです。、foreach文だけでも問題なく商品は表示されているし、理由で挙げられている、単数ならforeach、複数ならforという区分けもいくつかの参考書を手に取ってみましたが解かりませんでした。
なぜ、foreach文ではなくfor文で商品を表示させるのでしょうか。
php
1require_once "../lib/dbaccess.php"; 2 3$cart = $_SESSION['cart']; 4//$_SESSION['cart']は、$cart配列がどのページでも使えるようにしたものだ。中身は、商品に関する情報を管理する一意の商品番号が入っている。 5foreach($cart as $key => $val) { 6 7$dbh = dbaccess(); 8//mst_productテーブルに商品の番号、名前、価格、画像が入っている。 9$sql = 'SELECT * FROM mst_product WHERE code=?'; 10$stmt = $dbh->prepare($sql); 11//$valは、$_SESSION['cart']に代入された商品番号が代入されている。 12$data[0] = $val; 13$stmt->execute($data); 14$dbh = null; 15 16$rec = $stmt->fetch(PDO::FETCH_ASSOC); 17echo <<<EOL 18 19<p>{$rec['code']}</p> 20<p>{$rec['name']}</p> 21<p>{$rec['price']}</p> 22EOL; 23if(!$rec['gazou'] == '') { 24 print'<p><img src="../product/gazou/'.$rec['gazou'].'"></p>'; 25} 26print'<hr>'; 27 28 29}//foreach 30
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11151770801
申し訳ありませんでした。書き損じておりました。
参考にした書籍の内容は第二版で、ページは184Pです。
提示してあるソースは、内容を見る前に自身で作成したものを184pに掲載されているソースで加味したものであります。
回答2件
あなたの回答
tips
プレビュー