将值提取为逗号分隔列表

时间:2017-07-24 09:51:37

标签: php laravel laravel-5

我在下面有一个列表,我希望得到一个以逗号分隔值的值列表:

[{"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();

5 个答案:

答案 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

enter image description here

使用简单的 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名:使用implodearray分成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);