我有收集
IlluminateSupportCollection {#1453
#items: array:4 [
0 => "three"
1 => "nine"
2 => "one"
3 => "two"
]
}
和这个字符串
'one', 'two', 'three'
我正在尝试验证阵列中是否所有字符串都可用
$array->contains('one', 'two', 'three')
它应该返回真正的
但每次我得到错误的
我做错了什么请解释谢谢
对于可重用的containsAll
宏,我将Collection:diff
与Collection::isEmpty
结合使用。当提供的值包含集合中未包含的元素时,检查diff
的结果不会为空,因此返回false。
use IlluminateSupportCollection;
Collection::macro('containsAll', function (...$values) {
return collect($values)->diff($this)->isEmpty();
});
$collection = collect(['three', 'nine', 'one', 'two']);
$collection->containsAll('one', 'two', 'three'); // true
$collection->containsAll('one', 'five', 'three'); // false