$data[0]=$val; この1行のソースコードの意味がわかりません。 - PHPプロ!Q&A掲示板

4939

  • 0P

$data[0]=$val; この1行のソースコードの意味がわかりません。

質問日時 / 2018年4月19日 21:13    回答数 / 1件

Questioner:  30333033  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

foreach命令を使って、カート内にある商品の数だけループさせ、
商品ごとにSQL文でデータベースから商品名などの情報をもらう。
商品の情報を配列にいれていく。

このソースコードの$data[0]=$val;の意味がわかりません。
本を見ながら作成しています。
本にはループを回るたびに1,2,3となってしまわない為とかいてありますが・・・

foreach($cart as $key=>$val)
{
 $sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?';
 $stmt=$dbh->prepare($sql);
 $data[0]=$val;
 $stmt->execute($data);

 $rec=$stmt->fetch(PDO::FETCH_ASSOC)

 $pro_name[]=$rec['name'];
 $pro_price[]=$rec['price'];
 if($rec['gazou']=='')
 {
 $pro_gazou[]='';
 }
 else
{
 $pro_gazou[]='<img src="../product/gazou/'.$rec['gazou'].'">';

}

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix#変数 $cart は『codeだけ』を格納した一次元配列と

回答一覧

並び替え:

A01
answerershimix [4月20日 13:45] (最終編集:4月20日 13:45)

#変数 $cart は『codeだけ』を格納した一次元配列ということでいいのですかね



>$data[0] = $val;

配列 $data の(数字添え字で)最初の要素に $val の値を格納しているだけですね。


>本にはループを回るたびに1,2,3となってしまわない為とかいてありますが・・・

$data[] = $val; だとマズイのは理解できますよね。実行のたびに要素数が増えていきます(数字添え字で言えば、0, 1, 2, 3・・・)。
$data[0] = $val; ならば、$data の要素数がつねに 1 になります。



個人的には

>$data[0]=$val;
>$stmt->execute($data);

なぜわざわざ $data を使うのかの意図がわかりません。私なら $data は使わずに

$stmt->execute([$val]);
もしくは
$stmt->execute(array($val));

と書くでしょうね。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)