我在理解Laravel收集方法has()
和contains()
之间的区别时遇到了问题。
contains()方法采用单个值,键值对参数或回调函数,并返回该集合中是否存在该值的布尔值。
因此,基本上,它会根据值的存在返回一个布尔值。
has()-如果集合中不存在键值,则返回一个布尔值。
这还会根据值的存在返回一个布尔值吗?
我不知道他们与众不同。
希望有人能向我解释一下或分享一些有用的链接,我真的很感激。
答案 0 :(得分:2)
has
用于键,contains
用于值。
$collection = collect(['name' => 'Desk', 'price' => 100]);
$collection->has('name'); // true
$collection->has('Desk'); // false
$collection->contains('name'); // false
$collection->contains('Desk'); // true
答案 1 :(得分:2)
Laravel文档:
has方法确定集合中是否存在给定键 https://laravel.com/docs/5.8/collections#method-has
contains方法确定集合是否包含给定的项目: https://laravel.com/docs/5.8/collections#method-contains
所以has方法检查集合中是否有给定键,而contains方法检查集合中是否有给定值。
答案 2 :(得分:1)
你好,我认为区别在于has()方法仅搜索例如键:
$collection = collect(['account_id' => 1, 'product' => 'Desk', 'amount' => 5]);
$collection->has('product');
// true
$collection->has(['product', 'amount']);
// true
$collection->has(['amount', 'price']);
// false
和contains方法()用于确定集合中是否存在给定的$ key。此外,可以指定一个可选的$ value,该值将用于检查集合中是否存在给定的键/值对。
示例1:最基本的用法:
use Illuminate\Support\Collection;
// Create a new collection instance.
$collection = new Collection([
'bear',
'whale',
'chicken',
'tardigrade'
]);
// true
$collection->contains('bear');
// true
$collection->contains('tardigrade');
// false
$collection->contains('dog');
示例2:使用contains方法检查包含数组作为项的集合中是否存在给定的键/值对:
use Illuminate\Support\Collection;
// Create a new collection instance.
$collection = new Collection([
['big' => 'bear'],
['bigger' => 'whale'],
['small' => 'chicken'],
['smaller' => 'tardigrade']
]);
// true
$collection->contains('big', 'bear');
// true
$collection->contains('smaller', 'tardigrade');
// false
$collection->contains('smaller', 'paramecium');
示例3:使用假设的User类在对象集合上使用:
use Illuminate\Support\Collection;
class User
{
/**
* A hypothetical user's first name.
*
* @var string
*/
public $firstName = '';
/**
* A hypothetical user's favorite number.
*
* @var integer
*/
public $favoriteNumber = 0;
public function __construct($firstName, $favoriteNumber)
{
$this->firstName = $firstName;
$this->favoriteNumber = $favoriteNumber;
}
}
// Create a new collection instance.
$collection = new Collection([
new User('Jane', 7),
new User('Sarah', 9),
new User('Ben', 2)
]);
// true
$collection->contains('firstName', 'Jane');
// false
$collection->contains('firstName', 'Josh');
// false
$collection->contains('lastName', 'Jane');
// true
$collection->contains('favoriteNumber', 2);
祝你好运;)