[英]Extract value as comma separated list
我在下面有一個列表,我想以逗號分隔值的形式獲取值列表:
[{"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();
使用collection類,您可以執行此操作,因為它是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(',');
由於它是一個標准集合,因此您無需使用json_decode()
。 集合pluck()
方法將起作用:
$collection->pluck('id');
您也可以使用Eloquent的pluck()
方法,而不是使用select()
和get()
。
1:使用json_decode
將json字符串解碼為數組
第二個:使用array_column從array
獲取specific column
第三:使用implode
將array
分解為string
。
<?php
$array ='[{"id":49},{"id":61},{"id":5},{"id":58}]';
echo implode(',',array_column(json_decode($array,true),'id'));
?>
我可以通過很多方式做到這一點,但我想以laravel的方式做到這一點。 這就是為什么我刪除我的答案而!
你可以試試這個
$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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.