2017-08-10 30 views
1

我有一個數組,如下圖所示。正如你所看到的,陣列總共有20個尺寸。我如何將它裁減到只有3個尺寸?拉拉維爾有沒有雄辯的方式來做到這一點?Laravel,是否可以刪除部分數組大小?

enter image description here

穆罕默德Inaam穆尼爾回答

$null_index = 0; 
$current_index = 0; 

foreach ($rows as $key => $value) 
{ 

    $is_null = true; 
    foreach($value as $value_item) 
    { 
    if($value_item != null) 
    $is_null = false; 
    break; 
    } 

    if($is_null) 
    { 
    $null_index = $current_index; 
    break; // break the loop 
    } 

    $current_index++; 
} 


$rows = $rows->slice(0, $null_index); 

dd($rows); 
+0

您可以用' - >取()'或' - >限制()'得到的只是一些記錄:) –

+0

怎麼樣刪除其餘的? – begineeeerrrr

+0

沒有必要刪除它會給過濾結果,只是從數據庫中取幾條記錄 –

回答

2

您可以在Laravel收集使用切片方法

https://laravel.com/docs/5.4/collections#method-slice

//convert array into laravel collection 
$collection = collect($array); 

// slice the collection starting from 0 index and limit upto 4 array values. 
$slice = $collection->slice(0, 4); 

// convert $slice back to array 
$slice = $slice->toArray(); 

// now $slice variable has first 4 array values. 
dd($slice); 
+0

它會刪除數組的其餘部分嗎?我原來的想法是,我想插入藍色線條之間的新紀錄 – begineeeerrrr

+0

是的,它會刪除數組的其餘部分。 $ slice現在只有4個值,其餘的已被刪除。 –

+0

@begineeeerrrr我更新了我的答案,將laravel集合轉換回數組。 –

0

您可以ü SE take,它會顯示只有三個用戶:

$data = User::get()->take(3); 
+0

他已經有陣列了。現在他想從數組末尾刪除一些數據。 –

+0

你知道他只想要三個數據,那麼他可以使用限制。他想顯示多少個陣列。 –

0

您可以使用slice方法,該方法返回集合的開始給定的索引片

$collection = collect($array); 
$slicedArray = $collection->slice(0, 4); 

我原來的想法是,我想在藍線之間插入新記錄

要將項目插入到位置中,您可以使用splice方法

$collection = collect($array); 
$collection->splice(4, 0, $itemOrItemsArrayToInsert) 
相關問題