【问题标题】:Extract value as comma separated list将值提取为逗号分隔列表
【发布时间】:2017-09-25 19:40:36
【问题描述】:

我在下面有一个列表,我想获取一个以逗号分隔的值列表:

[{"id":49},{"id":61},{"id":5},{"id":58}] 

我试过 pluck 但它只返回单个值。我要:

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();

【问题讨论】:

  • 请出示您用于获取此收藏的代码。如果是标准合集,pluck 肯定行得通。

标签: php laravel laravel-5


【解决方案1】:

使用集合类你可以做到这一点,因为它是 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(',');

【讨论】:

    【解决方案2】:

    这样试试

    $t='[{"id":49},{"id":61},{"id":5},{"id":58}]' ;
    $ARRAY=json_decode($t,true);
    $ARRAY=array_column($ARRAY,'id')
    $VALUE=implode(',',$ARRAY);
    

    输出为

    使用简单的 json_decode()array_column()implode()

    【讨论】:

    • 如果您的问题得到解决,请通过接受我的回答来结束您的问题 :)
    • 请在此语句中添加分号 array_column($ARRAY,'id'); @BibhudattaSahoo
    • 我们需要等待几分钟才能接受答案。我在等它。
    【解决方案3】:

    由于它是标准集合,因此您无需使用json_decode()。集合pluck() 方法将起作用:

    $collection->pluck('id');
    

    你也可以使用 Eloquent 的 pluck() 方法来代替 select()get()

    【讨论】:

      【解决方案4】:

      你可以试试这个

      $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);
      

      【讨论】:

        【解决方案5】:

        1st:使用json_decode将json字符串解码成数组

        第二个:使用array_column从array获取specific column

        第三个:使用implodearray分解成string

        <?php
        
        $array ='[{"id":49},{"id":61},{"id":5},{"id":58}]';
        
        echo implode(',',array_column(json_decode($array,true),'id'));
        
        ?>
        

        我可以通过多种方式做到这一点,但我想以 laravel 的方式做到这一点。 这就是为什么我在 !!!

        【讨论】:

          猜你喜欢
          • 2011-05-26
          • 2012-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多