phpを勉強中で、カートを作っているのですが、多次元配列の理解が甘い様でうまくコントロール出来ません。
cart→id→{name=>ポテチ, price=>400}
という配列を作ったのですが、
foreachすると謎の「2」と言う値が現れます。
var_dumpするとその「2」は無い気がするんですが、これはいったいなんなのでしょうか。
わかる方、教えていただけるとありがたいです。
よろしくお願いします。
下記コードになります。
getで飛んできた値を$_SESSION['cart']に格納して、hederで次のページへ飛ばして、次ページでforeachしています。
※別の質問でも質問しているのですが、
コード頭の
$_SESSION['cart']=array();
ではどうも配列の初期化できていないようなんですが、こちらも教えて頂けると嬉しいです。
###ヘディングのテキスト
<?php session_start(); //なぜか下記コードで初期化されていなっぽいので各代入時にarray()で代入中 if(!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } $goods_id = $_GET['id'] ; $_SESSION['cart'] = array( goods_id => $goods_id ); $_SESSION['cart'][$goods_id] = array( name =>$_GET['name'] , price => $_GET['price'] ); header('location: order2.php'); exsit(); //order2.php <?php session_start(); echo '<br><br>$_SESSION全体をvar_dump():<br>'; var_dump($_SESSION); $name = $_SESSION['cart']['goods_id']['name']; echo '<br><br>$_SESSION[cart]をvar_dump:<br>'; echo var_dump($_SESSION['cart']); echo '<br><br>'; echo '<br><br>$_SESSION[cart][goods_id]をvar_dump:<br>'; echo var_dump($_SESSION['cart']['goods_id']); echo '<br><br>'; echo '<br><br>$_SESSION[cart][goods_id][name]をecho:<br>'; echo $_SESSION['cart']['goods_id']['name']; echo '<br><br>'; echo '$_SESSION[cart][goods_id][name]をvar_dump():<br>'; var_dump($_SESSION['cart']['goods_id']['name']); echo '<br><br>'; echo '<br><br>' . $name ; echo '<br><br>'; echo 'とりあえず、foreach ($_SESSION[cart] as $val )してみた:<br>'; foreach ($_SESSION['cart'] as $val ) { echo 'nameは:' . $val['name']; echo '<br>'; echo 'priceは:' .$val['price']; echo '<br>'; } ?> コード
foeachの出力結果
とりあえず、foreach ($_SESSION[cart] as $val )してみた:
nameは:2
priceは:2
nameは:ポテチ
priceは:400
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。