Laravel 5.4中如何跳过Pluck数组的第一个元素?
解决方案:跳过集合/数组的第一个元素
嘿,这个需求其实很容易实现,我给你几个实用的方法,都能精准得到你想要的结果:
方法一:使用集合的 skip() 方法
Laravel 集合自带的 skip() 方法可以直接跳过指定数量的元素,我们只需要在链式调用里加上它就行:
$orderStates = OrderState::listsTranslations('states') ->pluck('states', 'id') ->skip(1) // 跳过第一个元素 ->toArray();
这样处理后,集合会直接排除第一个元素,转成数组后就是你要的 [2 => "agreed", 3 => "canceled"]。
方法二:使用集合的 slice() 方法
slice() 和 skip() 效果类似,它可以从指定位置开始截取集合的剩余部分,代码如下:
$orderStates = OrderState::listsTranslations('states') ->pluck('states', 'id') ->slice(1) // 从第2个元素开始截取(索引从0开始) ->toArray();
如果后续需要截取固定长度的元素,还可以给 slice() 传第二个参数,比如 slice(1, 1) 就只取第二个元素,但这里我们不传的话就会取到最后。
方法三:转数组后用 array_slice() 处理
如果已经得到了原始数组,也可以用 PHP 原生函数 array_slice() 来处理,但要注意加上最后一个参数 true 来保留原键名:
// 先拿到原始数组 $originalStates = OrderState::listsTranslations('states') ->pluck('states', 'id') ->toArray(); // 跳过第一个元素并保留原键名 $orderStates = array_slice($originalStates, 1, null, true);
要是不加 true,数组的键会被重置成 0、1,就不符合你的需求啦。
个人更推荐前两种集合方法,因为在集合层面处理更高效,不用先转成数组再操作~
内容的提问来源于stack exchange,提问作者Yousef Altaf
相关产品推荐
相关产品推荐

