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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

14504閲覧

【Laravel】連想配列をviewでforeachを使って回せない

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/03/31 07:31

編集2017/03/31 08:04

初めまして。
Laravelを使っています。

コントローラで作成した連想配列をビューで回したいのですが、view側では値が存在しない?扱いになっています。

printで直接出力すると表示されますし、var_dumpでも表示されます。

以下がコードです。

コントローラ

php

1// jsonデータを連想配列に変換 2 $arr = json_decode($json,true); 3 if ($arr === NULL) { 4 /* 値がない場合(失敗) */ 5 return view('map.index')->with('msg','失敗'); 6 }else{ 7 /* 値がある場合(成功) */ 8 return view('map.index')->with('msg','成功')->with('arr',$arr); 9 }

ビュー

php

1<div> 2 <p>結果</p> 3 {{$msg}}<br /> 4 5 {{var_dump($arr)}} 6 7 @if($arr === NULL) 8 @foreach($arr as $val) 9 {{$val -> destination_addresses}} 10 @endforeach 11 @else 12 <br /><br /> 13 <p>NULL</p> 14 @endif 15</div>

結果は以下の通りです。
結果

原因は何が考えられるでしょうか?
よろしくお願いします。

連想配列を整理したものを載せておきます。
連想配列

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

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

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

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

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

natady

2017/03/31 07:57 編集

{{var_dump($arr)}}を<pre>タグで囲っていただけますでしょうか?
退会済みユーザー

退会済みユーザー

2017/03/31 08:05

コメントありがとうございます。整えたものを載せておきますたので参考にしていただけれたらと思います。
natady

2017/03/31 08:05

ちなみにforeachで回したい箇所はどこになりますか?
退会済みユーザー

退会済みユーザー

2017/03/31 08:18

返信ありがとうございます。destination_addresses,original_addresses,elementです。
guest

回答1

0

ベストアンサー

typoでしょうか?
@if($arr === NULL) -> @if($arr !== NULL)

ちなみに変数はまとめてviewに渡すこともできます。

php

1$data = [ 2 "hoge" => "hogehoge", 3 "macho" => "hogemacho", 4]; 5$js = [ 6 'hoge.js', 7 'hogehoge.js', 8]; 9$css = [ 10 'hoge.css', 11]; 12 13return view('map.index', compact('data', 'js', 'css'));

### 追記1
Trying to get property of non-objectは「オブジェクトでないものからプロパティを取得しようとしている」というエラーです。
$arrはオブジェクトではなく連想配列なので参照方法を変えます。

$val->destination_addresses -> $val['destination_addresses']

追記2

$arrは質問者様が想定している構造と違うのかもしれません。
もし$arr['destination_addresses']の値の配列をforeachで回したいのであれば次のように書く必要があります。

@foreach ($arr['destination_addresses'] as $address) {{$address}} @endforeach

投稿2017/03/31 07:43

編集2017/03/31 08:10
natady

総合スコア606

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

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

退会済みユーザー

退会済みユーザー

2017/03/31 07:48

回答ありがとうございます。 Trying to get property of non-object というエラーです。
natady

2017/03/31 07:58

回答に追記しました。ご覧ください。
退会済みユーザー

退会済みユーザー

2017/03/31 08:02

コメントありがとうございます。 そちらの参照方法はすでに試しており、Undefined index: destination_addressesというエラーで動きませんでした。
natady

2017/03/31 08:10

追記しましたのでご確認ください。
退会済みユーザー

退会済みユーザー

2017/03/31 08:21

返信ありがとうございます。 想定していた動きになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問