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

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

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

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

Q&A

解決済

2回答

3507閲覧

laravel5.4 bladeの空白について

rai_wc

総合スコア8

PHP

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

0グッド

0クリップ

投稿2017/12/05 01:51

編集2017/12/05 02:15

###前提・実現したいこと
メールで使用するbladeで、2重配列の要素を空欄なしで横に並べて表示させたい。

###発生している問題・エラーメッセージ
foreachを使用して値を取り出しているのですが、
foreachを書くことにより空白が生まれてしまうので、空白をなくしたいのです。
該当のソースコードの場合ですと、
ご希望: A,  B,  C
となり@foreachと@foreach, @endforeachと@endforeachの間の空欄が表示されている?状態になってしまいます。

###該当のソースコード
mail.blade.php

〇〇さんのご希望は下記で問題ありませんか?

ご希望:@foreach($hopes as $hope) @foreach($hope as $val){{$val->hope_type}}, @endforeach @endforeach

###試したこと
bladeでの空欄削除方法を調べましたが、わかりませんでした...
@foreach@foreachと書くと怒られてしまいますし...

####追記
@foreachで空欄が生まれないと思っていました。
が、Aの前には空白が一つ、Bの前には空白が3つなのでおそらく表示されていると思っています。

####追記2
$hopesの中身ですが、
$hopes[0][0]->hope_type = A
$hopes[1][0]->hope_type = B
$hopes[2][0]->hope_type = C
となっています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/12/05 01:58

質問の意図がよくわかりません。できればソースを載せてください。あと@foreachと書いた部分は基本的に空白にならないはずですが・・・
masaya_ohashi

2017/12/05 02:03

$hopesがどういう形になっているかを記載してください。
masaya_ohashi

2017/12/05 02:14

そのAとかBとかCというのは何らかのオブジェクトですか?
rai_wc

2017/12/05 02:16

言葉足らずですみません。stringの値が入っています。
guest

回答2

0

ベストアンサー

以下の箇所で空白が生まれています。

ご希望:@foreach($hopes as $hope)【空白】@foreach($hope as $val){{$val->hope_type}},【空白】@endforeach【空白】@endforeach

@foreach等で囲まれた範囲は「そのまま出力」されてしまうので、改行とか空白とかもそのままHTMLに出力されてしまいます。なので、空白等で崩れるレイアウトを気にするなら@phpタグを使ってechoを使って「出力する文字を厳格に制御」する方法を取るべきです。

PHP

1ご希望:@php 2 array_map( 3 function($num, $hope) use($hopes) { 4 array_map( 5 function($val) { 6 echo $val->hope_type; 7 }, 8 $hope 9 ); 10 // 希望する出力の最後にカンマがないので、一応回避処理もついでに入れておきます。 11 if($num < count($hopes) - 1) { 12 echo ','; 13 } 14 }, 15 array_keys($hopes), 16 $hopes 17 ); 18 @endphp

投稿2017/12/05 02:19

masaya_ohashi

総合スコア9206

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

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

rai_wc

2017/12/05 02:46

やはり@foreachの間の空白が表示されていましたか... そして、@phpの存在を知りませんでした... おかげで助かりました。ありがとうございました。
guest

0

以下確認してみてはいかがでしょうか?
・コードの@foreach周辺に空白が入って無いか→空白を消す
・$hopes[0][0]の中身が'A 'のように空白を含む形になっていないか
array_map等で配列の各要素に対して空白を削除する関数(str_replace等)を適用する
パッと思いつくのはこんな感じですが、他の方もおっしゃっているようにコードや$hopesの中身を載せて頂くとより答えやすいと思います^^
あと、僕も@foreach自体の影響で空白が入った経験はありません。

投稿2017/12/05 02:38

YorihiroKatsuki

総合スコア70

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

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

rai_wc

2017/12/05 02:53

@foreach【空白】@foreach がやはり原因でした... laravel触り始めてから1ヶ月弱ですが、こんな経験はなかったです... 中身に関しては空白が入っていなかったのでこれで間違えないと思います。 ただ、他のbladeを見てみると少し疑問が残っていたりしています。 ベストアンサーはもう既に選んでしまいましたが、回答ありがとうございました。
YorihiroKatsuki

2017/12/05 04:31

ひとまず解決されたようでよかったです^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問