質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2183閲覧

カートを勉強中で多次元配列に謎の値が発生するんです

yoyoyoyogi

総合スコア47

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/08/23 05:13

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

php

1$_SESSION['cart'] = array( goods_id => $goods_id );//この時点で2が入るのでは? 2$_SESSION['cart'][$goods_id] = array( name =>$_GET['name'] , price => $_GET['price'] ); 3 4var_dump($_SESSION['cart']);//ここで確かめて!!

この配列の仕様だと、同じ商品を複数カートに入れることができませんね…。

PHP

1$_SESSION['cart'][] = array( "goods_id" => $goods_id, "name" =>$_GET['name'] , "price" => $_GET['price'] );

こうすべきだと思いますよ。

投稿2015/08/23 05:27

編集2015/08/23 05:48
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問