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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

Q&A

解決済

2回答

2398閲覧

PHPで連想配列の中に連想配列を入れると、IEでNULLになる。

Zoohomi

総合スコア26

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

1グッド

1クリップ

投稿2017/06/25 05:48

###問題点

連想配列の中に連想配列を入れ、参照するとIEでNULLになります。 どのように記述すれば、商品ごとの情報を定数で保持できますでしょうか?

###発生している問題・エラーメッセージ

連想配列をネストすると、IEでのみ参照できない。

###該当のソースコード

PHP

1<orderConst.php> 2// 画像URL 3const KEY_IMGURL = '画像パス'; 4// 料金 5const KEY_PRICE = '料金'; 6// タイトル 7const KEY_TITLE = 'タイトル'; 8// 説明文 9const KEY_DESCRIPTION = '説明文'; 10 11// 商品記号と対応した商品データを格納する連想配列 12const ARY_PRODUCT = array('A' => array( 13 KEY_IMGURL => 'img/a.jpg', 14 KEY_PRICE => '9,999', 15 KEY_TITLE => '商品A' 16 ) , 17 'B' => array( 18 KEY_IMGURL => 'img/b.jpg', 19 KEY_PRICE => '9,999', 20 KEY_TITLE => '商品B' 21 ) 22 ); 23 24<order.php> 25include_once('const.php'); 26 27// 以下の結果が、Chromeでは「img/a.jpg」が表示され、 28// IE では「NULL」が表示される。 29var_dump(ARY_PRODUCT['A'][KEY_IMGURL]);

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

x_x👍を押しています

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

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

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

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

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

guest

回答2

0

自己解決

【解決しました!】
回答ありがとうございました。
着目点が違っておりました。

実際の処理では、


連想配列の1次元目である'A'などの商品Keyが
別ページの

html

1<Input type="image" Value="A"><Input type="image" Value="Z">

のボタンを押下した際に
押下したボタンに応じて商品KeyがPOSTされ、そのValue値を基に連想配列のデータを参照する


といったデータの渡しかたをしていたのですが、imageはieだとvalueの値がPOSTされないんですね・・・。
なので、連想配列は問題ないのですが、input要素のtype=imageのvalueから商品Keyを受け取れていないがばかりに、

php

1// IEの場合 2ARY_PRODUCT[NULL]['画像パス'] 3// ※NULLの場所が、IE以外はinput要素のtype=imageのvalueで渡されたKey

となっていたようです。。

imageが原因と予測できていなかったために、質問に載せていなかったので、混乱させてしまいました。
以後imageは使用せず、

html

1<button type="submit" value="A"> 2 <img src="ボタン画像.jpg" /> 3</button>

とすることにします。

考えてくださってありがとうございました!!

投稿2017/06/25 08:31

Zoohomi

総合スコア26

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

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

退会済みユーザー

退会済みユーザー

2017/06/25 08:51

質問するなら、最低限自身で確認したコードを載せましょうよ。。。
Zoohomi

2017/06/26 09:06

申し訳ございません(-_-;) ImageがIEでのみvalueを渡せないことを知らない為に、呼び元ページは眼中になかったので・・。 でも今思えば、質問する前に、POSTデータからではなく、Keyを直値で入力してvar_dumpしていれば原因が多次元配列でないことに気づいていたはずでした。 目を通してくださり有難うございます^^ この件で、まだこの振る舞いを知らない方々がImageの罠に気づければ幸いです。
退会済みユーザー

退会済みユーザー

2017/06/26 12:48

誰の役にもたたないですよ。。。 質問文では、POSTの事実を伏せ、単純にオブジェクト定数 を使用した事になっているんですから、仮に同じ現象に悩んだ人がいたとしてもたどり着けません。 この質問に取り組んだ人の時間を無駄にさせただけです。
guest

0

PHPはサーバで動くため、ブラウザによって挙動が変わることはあまりありません。IEのキャッシュを消してみてください。

【ブラウザの更新 スーパーリロード】
http://www.netyasun.com/browser/reload.html

【【みんなの知識 ちょっと便利帳】Webページを最新の状態で見る - ブラウザーのフルリロード、スーパーリロード方法】
http://www.benricho.org/Tips/page_reload/

投稿2017/06/25 06:55

kei344

総合スコア69364

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問