Skip to content

Commit c8ca53c

Browse files
committed
Add array_all method
1 parent 9fe3820 commit c8ca53c

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

src/Php84/Php84.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,15 @@ public static function array_any(array $array, callable $callback): bool
9696

9797
return false;
9898
}
99+
100+
public static function array_all(array $array, callable $callback): bool
101+
{
102+
foreach ($array as $key => $value) {
103+
if (!$callback($value, $key)) {
104+
return false;
105+
}
106+
}
107+
108+
return true;
109+
}
99110
}

src/Php84/bootstrap.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ function array_find_key(array $array, callable $callback) { return p\Php84::arra
3636
function array_any(array $array, callable $callback): bool { return p\Php84::array_any($array, $callback); }
3737
}
3838

39+
if (!function_exists('array_all')) {
40+
function array_all(array $array, callable $callback): bool { return p\Php84::array_all($array, $callback); }
41+
}

tests/Php84/Php84Test.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ public function testArrayAny(array $array, callable $callback, bool $expected):
5151
$this->assertSame($expected, array_any($array, $callback));
5252
}
5353

54+
/**
55+
* @dataProvider arrayAllDataProvider
56+
*/
57+
public function testArrayAll(array $array, callable $callback, bool $expected): void {
58+
$this->assertSame($expected, array_all($array, $callback));
59+
}
60+
5461
public static function ucFirstDataProvider(): array {
5562
return [
5663
['', ''],
@@ -144,4 +151,23 @@ public static function arrayAnyDataProvider(): array {
144151
[['a' => '1', 'b' => '12', 'c' => '123', 'd' => '1234'], $callableKey, false],
145152
];
146153
}
154+
155+
public static function arrayAllDataProvider(): array {
156+
$callable = function ($value): bool {
157+
return strlen($value) > 2;
158+
};
159+
160+
$callableKey = function ($value, $key): bool {
161+
return is_numeric($key);
162+
};
163+
164+
return [
165+
[[], $callable, true],
166+
[['a', 'aa', 'aaa', 'aaaa'], $callable, false],
167+
[['aaa', 'aaa'], $callable, true],
168+
[['a' => '1', 'b' => '12', 'c' => '123', 'd' => '1234'], $callable, false],
169+
[['a' => '1', 'b' => '12', 'c' => '123', 'd' => '1234'], $callableKey, false],
170+
[[1 => '1', 2 => '12', 3 => '123', 4 => '1234'], $callableKey, true],
171+
];
172+
}
147173
}

0 commit comments

Comments
 (0)