Issue
i have collection
Illuminate\Support\Collection {#1453
#items: array:4 [
0 => "three"
1 => "nine"
2 => "one"
3 => "two"
]
}
and this string
'one', 'two', 'three'
i am trying to validate if these all strings available in array
$array->contains('one', 'two', 'three')
it should return true
but everytime i am getting false
what i am doing wrong please explain thank you
Solution
I use Collection:diff in combination with Collection::isEmpty for a reusable containsAll macro. When the supplied values contain an element that's not included in the collection to check against the result of diff won't be empty and therefore return false.
use Illuminate\Support\Collection;
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
Answered By - Dan Answer Checked By - David Marino (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.