如何按索引将项目添加到 Laravel Eloquent 集合中?
How can I add an item into a Laravel Eloquent Collection by index?
我尝试了以下但它不起作用。
$index = 2;
$collection->put($index, $item4);
例如,如果 $collection 看起来像这样:
$collection = [$item1, $item2, $item3];
我想结束:
$collection = [$item1, $item2, $item4, $item3];
最简单的方法可能是拼接它,像这样:
$collection->splice(2, 0, [$item4]);
集合通常支持与常规 PHP 数组相同的功能。在这种情况下,它是在幕后使用的 array_splice() 函数。
通过将第二个参数设置为 0,您实质上是将 PHP 告诉 "go to index 2 in the array, then remove 0 elements, then insert this element I just provided you with"。
详细说明 Joel 的回答:
splice
修改原始集合和 returns 提取的元素
- 新项目被类型转换为数组,如果这不是我们想要的,我们应该将它包装在数组中
然后在索引 $index
处添加 $item
:
$collection->splice($index, 0, [$item]);
或者一般来说:
$elements = $collection->splice($index, $number, [$item1, $item2, ...]);
其中 $number
是我们要从原始集合中提取(和删除)的元素数。
我尝试了以下但它不起作用。
$index = 2;
$collection->put($index, $item4);
例如,如果 $collection 看起来像这样:
$collection = [$item1, $item2, $item3];
我想结束:
$collection = [$item1, $item2, $item4, $item3];
最简单的方法可能是拼接它,像这样:
$collection->splice(2, 0, [$item4]);
集合通常支持与常规 PHP 数组相同的功能。在这种情况下,它是在幕后使用的 array_splice() 函数。
通过将第二个参数设置为 0,您实质上是将 PHP 告诉 "go to index 2 in the array, then remove 0 elements, then insert this element I just provided you with"。
详细说明 Joel 的回答:
splice
修改原始集合和 returns 提取的元素- 新项目被类型转换为数组,如果这不是我们想要的,我们应该将它包装在数组中
然后在索引 $index
处添加 $item
:
$collection->splice($index, 0, [$item]);
或者一般来说:
$elements = $collection->splice($index, $number, [$item1, $item2, ...]);
其中 $number
是我们要从原始集合中提取(和删除)的元素数。