2017-08-10 38 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) 
相关问题