• ベストアンサー

連装配列の展開について

いつも拝見し勉強させていただいております。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2202793 で質問させていただき、無事にセッションに配列を 入れ込むことができたのですが、今度は展開することが できませんでした。 セッションに配列を入れるソースは以下のとおりです。 $_SESSION['cart'][商品コード] = array('商品名'=>$_POST['商品名'],'値段'=>$_POST['値段'], '購入数'=>$_POST['購入数'],'商品サイズ'=>$_POST['商品サイズ'],); これを別ページで一つ一つのデータに展開しようとするのですがうまくいかず困っております。 申し訳ございませんがお知恵をお貸しください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

連装配列=>連想配列です。 配列名に日本語はあまり使わないほうがいいと思います。何らかの問題になる可能性が出てきます。 と、ここまではあまり関係ない話ですね。 上記のように配列に格納したのなら、 商品名 = $_SESSION['cart'][商品コード][商品名]; 値段 = $_SESSION['cart'][商品コード][値段]; 購入数 = $_SESSION['cart'][商品コード][購入数]; 商品サイズ = $_SESSION['cart'][商品コード][商品サイズ]; でOKです。 面倒なときはextract関数を使うと便利もしれません。 extract($_SESSION['cart'][商品コード]); これで配列名で変数に格納されます。

参考URL:
http://taketan.mydns.jp/
nakaskk
質問者

お礼

いろいろと試したら無事にうまく展開することができました。 勉強不足を痛感いたしました。 本当にありがとうございました。

nakaskk
質問者

補足

ご回答ありがとうございます。 >配列名に日本語はあまり使わないほうがいいと思いま >す。何らかの問題になる可能性が出てきます。 アドバイスありがとうございます。 説明しやすいために変更させていただいておりました。 正確には$_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に入れてあげると 無事に求めたい結果が出てきました。 たびたび申し訳ございませんがアドバイスいただけますでしょうか? よろしくお願いいたします。

その他の回答 (1)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.2

まず、$_SESSION['cart']を、 foreachでキーをとりつつ回して、 その中で、foreachを回すで、いけそうな気がします。 イメージとしては、↓です。 foreach ($_SESSION['cart'] as $key => $value) {  foreach ($value as $key2 => $value2) {

nakaskk
質問者

お礼

ご回答ありがとうございます。 foreach ($_SESSION['cart'] as $key => $value) { echo "$value[name]"; } とすると無事に名前が取得できました。

関連するQ&A