8000 [12.x] Introducing `Arr::hasAll` (#55815) · laravel/framework@87fa7e2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 87fa7e2

Browse files
[12.x] Introducing Arr::hasAll (#55815)
* Feat: Add Arr::hasAll Method * Feat: Adding New Tests * Update src/Illuminate/Collections/Arr.php Co-authored-by: Muhammad Rizky Rizaldi <myquinn489@gmail.com> --------- Co-authored-by: Muhammad Rizky Rizaldi <myquinn489@gmail.com>
1 parent 686b0f7 commit 87fa7e2

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/Illuminate/Collections/Arr.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,30 @@ public static function has($array, $keys)
495495
return true;
496496
}
497497

498+
/**
499+
* Determine if all keys exist in an array using "dot" notation.
500+
*
501+
* @param \ArrayAccess|array $array
502+
* @param string|array $keys
503+
* @return bool
504+
*/
505+
public static function hasAll($array, $keys)
506+
{
507+
$keys = (array) $keys;
508+
509+
if (! $array || $keys === []) {
510+
return false;
511+
}
512+
513+
foreach ($keys as $key) {
514+
if (! static::has($array, $key)) {
515+
return false;
516+
}
517+
}
518+
519+
return true;
520+
}
521+
498522
/**
499523
* Determine if any of the keys exist in an array using "dot" notation.
500524
*

tests/Support/SupportArrTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,29 @@ public function testHas()
702702
$this->assertFalse(Arr::has([], ['']));
703703
}
704704

705+
public function testHasAllMethod()
706+
{
707+
$array = ['name' => 'Taylor', 'age' => '', 'city' => null];
708+
$this->assertTrue(Arr::hasAll($array, 'name'));
709+
$this->assertTrue(Arr::hasAll($array, 'age'));
710+
$this->assertFalse(Arr::hasAll($array, ['age', 'car']));
711+
$this->assertTrue(Arr::hasAll($array, 'city'));
712+
$this->assertFalse(Arr::hasAll($array, ['city', 'some']));
713+
$this->assertTrue(Arr::hasAll($array, ['name', 'age', 'city']));
714+
$this->assertFalse(Arr::hasAll($array, ['name', 'age', 'city', 'country']));
715+
716+
$array = ['user' => ['name' => 'Taylor']];
717+
$this->assertTrue(Arr::hasAll($array, 'user.name'));
718+
$this->assertFalse(Arr::hasAll($array, 'user.age'));
719+
720+
$array = ['name' => 'Taylor', 'age' => '', 'city' => null];
721+
$this->assertFalse(Arr::hasAll($array, 'foo'));
722+
$this->assertFalse(Arr::hasAll($array, 'bar'));
723+
$this->assertFalse(Arr::hasAll($array, 'baz'));
724+
$this->assertFalse(Arr::hasAll($array, 'bah'));
725+
$this->assertFalse(Arr::hasAll($array, ['foo', 'bar', 'baz', 'bar']));
726+
}
727+
705728
public function testHasAnyMethod()
706729
{
707730
$array = ['name' => 'Taylor', 'age' => '', 'city' => null];

0 commit comments

Comments
 (0)
0