我在下面有一个列表,我希望得到一个以逗号分隔值的值列表:
[{"id":49},{"id":61},{"id":5},{"id":58}]
我试过采摘但它只返回单个值。我想要:
49,61,5,58
我可以通过多种方式实现这一目标,但我想以laravel的方式做到这一点。
代码:
$locations = Location::select('id')->whereIn('id', function($query) use ($id)
{
$query->select('location_id')
->from('users_locations')
->whereRaw('user_id ='.$id);
})->get();
答案 0 :(得分:5)
使用集合类可以做到这一点,因为它是json你必须首先解码它所以它是一个数组,你可以转换为Illuminate\Support\Collection
。
$data = json_decode('[{"id":49},{"id":61},{"id":5},{"id":58}]', true);
$csv_data = collect($data)->pluck('id')->implode(',');
如果您想要数组而不是字符串,请删除implode
调用。
看到你的代码后,这应该可以正常工作。
$csv_data = $locations->pluck('id')->implode(',');
答案 1 :(得分:1)
试试这个
$t='[{"id":49},{"id":61},{"id":5},{"id":58}]' ;
$ARRAY=json_decode($t,true);
$ARRAY=array_column($ARRAY,'id')
$VALUE=implode(',',$ARRAY);
IT GIVE OUTPUT AS
使用简单的 json_decode(), array_column()和 implode()
答案 2 :(得分:1)
由于它是标准集合,因此您无需使用json_decode()
。集合pluck()
方法将起作用:
$collection->pluck('id');
您也可以使用Eloquent的pluck()
方法,而不是使用select()
和get()
。
答案 3 :(得分:0)
1st:使用json_decode
将json字符串解码为数组
第二名使用array_column从specific column
获取array
第3名:使用implode
将array
分成string
。
<?php
$array ='[{"id":49},{"id":61},{"id":5},{"id":58}]';
echo implode(',',array_column(json_decode($array,true),'id'));
?>
我可以通过多种方式做到这一点,但我想以laravel的方式做到这一点。 这就是为什么我在删除答案的同时!!!
答案 4 :(得分:0)
你可以试试这个
$data_arr = json_decode('[{"id":49},{"id":61},{"id":5},{"id":58}]', true);
$resultarr = array();
foreach($data_arr as $data){
$resultarr[] = $data['id'];
}
echo implode(',', $resultarr);