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

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

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

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

Q&A

解決済

2回答

1025閲覧

多次元配列の複雑構造出力

tsubakin

総合スコア19

PHP

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

0グッド

0クリップ

投稿2018/11/16 08:02

編集2018/11/16 09:53

このようなvar_dump($arr)で表示させた配列の$arrがあり
そこの["code"]が"1"の["Result"]の結果を
foreach文を使って出力したいのでアドバイスください。
※foreach($arr as $val){
foreach(($array)$val ["timeResult"] as $val2){
if($val2["code"] == "1"){
エラーがでます。
エラー文
Undefined index: Result in

array(5) { ["year"]=> int(2018) ["currentEmployee"]=> array(2) { ["divicode"]=> string(7) "0000000" ["lastName"]=> string(3) "名前" } ["startDate"]=> string(10) "2018-11-01" ["Obtained"]=> array(2) { [0]=> array(1) { ["code"]=> int(2) } [1]=> array(1) { ["code"]=> int(9) } } ["timeResult"]=> array(3) { [0]=> array(3) { ["code"]=> string(3) "1" ["Name"]=> string(6) "時間" ["Result"]=> float(629) } [1]=> array(3) { ["code"]=> string(3) "2" ["Name"]=> string(6) "時間" ["Result"]=> float(194) } [2]=> array(5) { ["code"]=> string(3) "3" ["Name"]=> string(6) "時間" ["Result"]=> float(6389) } array(5) { ["year"]=> int(2018) ["currentEmployee"]=> array(2) { ["divicode"]=> string(7) "0000000" ["lastName"]=> string(3) "名前" } ["startDate"]=> string(10) "2018-11-01" ["Obtained"]=> array(2) { [0]=> array(1) { ["code"]=> int(2) } [1]=> array(1) { ["code"]=> int(9) } } ["timeResult"]=> array(3) { [0]=> array(3) { ["code"]=> string(3) "1" ["Name"]=> string(6) "時間" ["Result"]=> float(629) } [1]=> array(3) { ["code"]=> string(3) "2" ["Name"]=> string(6) "時間" ["Result"]=> float(200) } [2]=> array(5) { ["code"]=> string(3) "3" ["Name"]=> string(6) "時間" ["Result"]=> float(5530) }

このような配列の$arrがあり
そこの["code"]が"1"の["Result"]の結果を出力したいのですが

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

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

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

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

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

ttyp03

2018/11/16 08:12

前回と同じ質問?
ttyp03

2018/11/16 08:14

array()が2つあるけどどのような構造?$arr[0]と$arr[1]?
yambejp

2018/11/16 08:19 編集

「このような配列の$arrがあり」配列が再現できないのでもう一度$arrに代入する形でソースを提示して下さい、。
tsubakin

2018/11/16 08:17

そうです。前回は最初に答えていただいたことが知りたかったので、新しく質問させていただきましたが、前回の続きの質問です。
guest

回答2

0

ベストアンサー

$arr[0]と$arr[1]があると想定して書いてみたら、質問のコードと同じになったのでコード自体は問題ないと思われます。
何か余計な文字(全角スペースとか)が入ってたりしないでしょうか。
またどちらのforeachでエラーが出るのかも書いていただけるとよいかと思います。

投稿2018/11/16 08:23

ttyp03

総合スコア16996

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

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

tsubakin

2018/11/16 08:29

いつも回答ありがとうございます。 私の書き方が悪いですね。書き直します。 いくつかのjsonデータのあるファイルを読み込んで 配列に格納してvar_sump($arr)で表示させた一部です。 二つ目のforeach行でエラー表示です。
ttyp03

2018/11/16 08:33

いまいち構造がわからない・・・ 試しに2つ目のループの前で、var_dump($var); してみてください。
ttyp03

2018/11/16 08:48

syntax error ですか。 結局前回の質問の終わりと同じ状況ですね。 syntax error だと構造云々の話ではないので、コードをキチンと見直してみてください。
tsubakin

2018/11/16 09:40 編集

新しく書き直して行いました。 そしたら、syntax errorは表示されなくなりましたが別のエラーが表示されました。 Invalid argument supplied for foreach() in Undefined index: Result in この2つです。 どちらも2つ目のforeachの文の行です
tsubakin

2018/11/16 09:56

今見直したら参照する[]の中身が違ってました。 これで行けました お手数おかけしました ありがとうございます。
guest

0

timeResult$arr内の配列の要素ではなく$arr自体の要素であるように見えます。

であれば以下のようになるのでは。

PHP

1foreach($arr["timeResult"] as $val){ 2 if($val["code"] == "1"){ 3 //略 4 } 5}

追記

timeResultは$arr内の配列の要素ではなく$arr自体の要素であるように見えます。

上記のように見えていたのですが、array() {略}という記述が二つあるので、
これ自体を$arrの要素だと考えると取り出し方は誤りないように見えます。

しいて言えばforeach($val ["timeResult"] as $val2)$val["timeResult"]の間に
半角スペースが入っているのが怪しいです。
(本来は含まれていなくて質問文入力時に混入したとかだったらどうしよう)

投稿2018/11/16 08:12

編集2018/11/16 08:19
madoka9393

総合スコア992

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

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

madoka9393

2018/11/16 08:14

…と思ったけど同じ「array() {」の記載が二つあるってことはこれ一つずつが$arrの要素なのだろうか…。
tsubakin

2018/11/16 08:31

回答ありがとうございます。 私の書き方が悪いですね。書き直します。 いくつかのjsonデータのあるファイルを読み込んで 配列に格納してvar_sump($arr)で表示させた一部です。 半角とかは記入時のものです。 他のところも一応確認しているつもりなので、変なスペースとかはないはずなのですが
madoka9393

2018/11/16 08:35

なるほどそうなのですね。 ・質問文にコードを転記する際には転記したいコードをコピーして張り付ける ・コードを記載するにはコードブロックを使用する (<code>をクリックして表示される「```」と「```」の間にコードを書くか 自分で手入力した「```」と「```」の間にコードを書く) ようにしてください。 また、出力されたエラー文言があるならそれを質問文に追記してください。
tsubakin

2018/11/16 08:41

ご指摘ありがとうございます。 エラー文は追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問