- ベストアンサー
連装配列の展開について
いつも拝見し勉強させていただいております。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2202793 で質問させていただき、無事にセッションに配列を 入れ込むことができたのですが、今度は展開することが できませんでした。 セッションに配列を入れるソースは以下のとおりです。 $_SESSION['cart'][商品コード] = array('商品名'=>$_POST['商品名'],'値段'=>$_POST['値段'], '購入数'=>$_POST['購入数'],'商品サイズ'=>$_POST['商品サイズ'],); これを別ページで一つ一つのデータに展開しようとするのですがうまくいかず困っております。 申し訳ございませんがお知恵をお貸しください。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
連装配列=>連想配列です。 配列名に日本語はあまり使わないほうがいいと思います。何らかの問題になる可能性が出てきます。 と、ここまではあまり関係ない話ですね。 上記のように配列に格納したのなら、 商品名 = $_SESSION['cart'][商品コード][商品名]; 値段 = $_SESSION['cart'][商品コード][値段]; 購入数 = $_SESSION['cart'][商品コード][購入数]; 商品サイズ = $_SESSION['cart'][商品コード][商品サイズ]; でOKです。 面倒なときはextract関数を使うと便利もしれません。 extract($_SESSION['cart'][商品コード]); これで配列名で変数に格納されます。
- 参考URL:
- http://taketan.mydns.jp/
その他の回答 (1)
- Ikonos00
- ベストアンサー率28% (86/302)
まず、$_SESSION['cart']を、 foreachでキーをとりつつ回して、 その中で、foreachを回すで、いけそうな気がします。 イメージとしては、↓です。 foreach ($_SESSION['cart'] as $key => $value) { foreach ($value as $key2 => $value2) {
お礼
ご回答ありがとうございます。 foreach ($_SESSION['cart'] as $key => $value) { echo "$value[name]"; } とすると無事に名前が取得できました。
お礼
いろいろと試したら無事にうまく展開することができました。 勉強不足を痛感いたしました。 本当にありがとうございました。
補足
ご回答ありがとうございます。 >配列名に日本語はあまり使わないほうがいいと思いま >す。何らかの問題になる可能性が出てきます。 アドバイスありがとうございます。 説明しやすいために変更させていただいておりました。 正確には$_SESSION['cart'][$code] = array('name'=>$_POST['name'],'price'=>$_POST['price'], 'kazu'=>$_POST['kazu'],'size'=>$_POST['size'],); と記述しております。 アドバイス頂いたとおり試しに名前を表示させようと print_r($_SESSION['cart'][$code][name]); としてみたのですが表示されませんでした。 ($_SESSION['cart'][$code][name]);内の $codeに値をセットしてあげる必要があるようです。 試しに3という値を$codeに入れてあげると 無事に求めたい結果が出てきました。 たびたび申し訳ございませんがアドバイスいただけますでしょうか? よろしくお願いいたします。