2017-06-20 15 views
1
@foreach($users as $user) 

$users[] = $user->name; 

@endforeach 

このような出力を得たいと思います。laravel5を使用してforeachループを配列に変換する

['X', 'Y', 'Z', 'C']; 

注:JavaScript機能でこれを使用する必要があるため、これが必要です。

+2

_「JavaScript関数でこれを使用する必要があるため、これが必要です」_ - 次に「json_encode」を使用します。 – CBroe

+0

JavaScriptを使ってどうやって使うのか教えていただけますか?また、 '$ users'がEloquent Collectionであると仮定していますか? –

+0

コメントありがとうございました。今、jsでこれらの引用符を取り除くことはできますか? [" A " " B " "] @CBroe –

答えて

1

まず、foreachループを配列に変換することはできません。 foreachループを使用して結果の配列を取得します。この場合、私はforeachアプローチでは行かないでしょう。あなたのコードを少しきちんと掃除するのに役立ついくつかの方法があります。

あなたは$users変数、pluck()またはarray_column()の種類に応じて、2つのオプションがあります:(コメントは指摘したように)あなたがその出力を使用する場合は

// $users is a collection 
json_encode($users->pluck('name')); 

// $users is an array 
json_encode(array_column($users, 'name')); 

json_encode()を強くお勧めしますあなたのjavascript。今すぐあなたはそれを応答で送信し、それを通常のJSONとして使用することができます。

あなたは、ブレードを使用した変数を印刷し、あなたが{{ }}を使用している場合、それはボンネットの下にhtmlspecialchars()機能を使用していますので、そうでない場合、あなたは、不要なscaped文字になるだろう、{!! !!}を使用する必要が覚えている場合。

希望すると、これが役立ちます。

+0

私はそれをjsonに変換することができますが、['A'、 'B']の代わりに[" A "," B "の代わりになります –

+0

私はあなたがjsonを印刷するためにブレードを使用しているとします。 '{!! '{{}} 'の代わりに'!{'}を使って変数を出力します。 – Asur

+0

ありがとうございました。 –

0

私はあなただけのコントローラでこのアクションを実行する必要がありますお勧めします、と

var names="{!! $userNames!!}"; 
var names= names.split(","); 
+0

なぜ、彼がbladeとlaravelを使っていると言ったら '<?php echo'を使うのですか? – henrik

0

コレクションは自動的に変換されるよう

$userNames=implode(",",array_column($users,'name')); 
return view('your_view',['userNames'=>$userNames]); 

は、その後、あなたのJSでそれを分割して、あなたのビューに渡しますそれらをエコーし​​ようとするとjsonになります。

&quot;が表示されている理由は、{{ }}を使用すると自動的に保護された文字列がエスケープされるためです。代わりに{!! !!}を使用してこれを防ぐことができます。

<script> 

    var data = '{!! $users->pluck('name') !!}'; 

    console.log(JSON.parse(data)); 
</script> 

・ホープ、このことができます:

はこのような何かを試してみてください!

関連する問題