@foreach($users as $user)
$users[] = $user->name;
@endforeach
我想得到这样的输出。
['X', 'Y', 'Z', 'C'];
注意:我需要这个,因为我必须在JavaScript函数中使用它。
答案 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>
希望这有帮助!