函数名: Collection::addOrReplaceOne()
适用版本: Laravel 8.0 或更高版本
用法:该函数用于将一个项添加到集合中或者替换集合中的一个已有项。
参数:
- $key(字符串):要添加或替换的项的键名。
- $value(任意类型):要添加或替换的项的值。
- $callback(闭包函数,可选):如果指定了该参数,将使用闭包函数来决定是否替换已有项。闭包函数接受当前键名对应的已有值和要添加或替换的值,返回 true 表示替换,false 表示不替换。
返回值:无
示例代码:
use Illuminate\Support\Collection;
$collection = new Collection(['apple', 'banana', 'orange']);
// 添加项到集合中
$collection->addOrReplaceOne('grape', 'purple');
// 替换集合中已有项
$collection->addOrReplaceOne('banana', 'yellow');
// 使用闭包函数决定项是否替换
$collection->addOrReplaceOne('orange', 'red', function ($existingValue, $newValue) {
return strlen($existingValue) < strlen($newValue);
});
$collection->dump(); // 输出:['apple', 'yellow', 'red', 'grape']
以上示例中,首先使用 addOrReplaceOne() 添加了一个新的项 'grape' 到集合中。然后,使用相同的键名 'banana' 替换了集合中已有的 'banana' 项。最后,使用闭包函数判断了要替换的 'orange' 的长度是否比已有值的长度更长,最终将 'orange' 替换为了 'red'。最后一步的结果是 ['apple', 'yellow', 'red', 'grape']。