使用laravel5将foreach循环转换为数组

时间:2017-06-20 07:33:44

标签: laravel foreach

@foreach($users as $user)

$users[] = $user->name; 

@endforeach

我想得到这样的输出。

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

注意:我需要这个,因为我必须在JavaScript函数中使用它。

3 个答案:

答案 0 :(得分:1)

首先,你不能“将一个foreach循环变成一个数组”,你将使用这个foreach循环来获得一个数组作为结果。在这种情况下,我不会采用foreach方法,有一些方法可以帮助您清理代码。

根据$users变量的类型pluck()array_column(),您有两种选择:

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

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

如果您要在javascript中使用该输出,强烈建议json_encode()(如评论所指出)。现在您可以在响应中发送它并将其用作普通的JSON。

如果您使用Blade打印生成的变量,请记住您需要使用{!! !!},否则,如果您使用{{ }},您将获得不需要的跳过字符,因为它使用htmlspecialchars()函数引擎盖下。

希望这会对你有所帮助。

答案 1 :(得分:0)

我建议您只应在控制器中执行此操作,然后将其作为

传递给您的视图
$userNames=implode(",",array_column($users,'name')); 
return view('your_view',['userNames'=>$userNames]);

然后将其拆分为js

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

答案 2 :(得分:0)

当您尝试回复时,收藏集会自动转换为json

您看到"的原因是因为使用{{ }}会自动转义字符串以进行保护。您可以使用{!! !!}来阻止此操作。

尝试这样的事情:

<script>

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

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

希望这有帮助!