Skip to content

Commit 9fe3820

Browse files
committed
Add array_any method
1 parent c42df8f commit 9fe3820

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

src/Php84/Php84.php

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

8686
return null;
8787
}
88+
89+
public static function array_any(array $array, callable $callback): bool
90+
{
91+
foreach ($array as $key => $value) {
92+
if ($callback($value, $key)) {
93+
return true;
94+
}
95+
}
96+
97+
return false;
98+
}
8899
}

src/Php84/bootstrap.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,7 @@ function array_find(array $array, callable $callback) { return p\Php84::array_fi
3232
function array_find_key(array $array, callable $callback) { return p\Php84::array_find_key($array, $callback); }
3333
}
3434

35+
if (!function_exists('array_any')) {
36+
function array_any(array $array, callable $callback): bool { return p\Php84::array_any($array, $callback); }
37+
}
38+

tests/Php84/Php84Test.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ public function testArrayFindKey(array $array, callable $callback, $expected): v
4444
$this->assertSame($expected, array_find_key($array, $callback));
4545
}
4646

47+
/**
48+
* @dataProvider arrayAnyDataProvider
49+
*/
50+
public function testArrayAny(array $array, callable $callback, bool $expected): void {
51+
$this->assertSame($expected, array_any($array, $callback));
52+
}
53+
4754
public static function ucFirstDataProvider(): array {
4855
return [
4956
['', ''],
@@ -118,4 +125,23 @@ public static function arrayFindKeyDataProvider(): array {
118125
[['a' => '1', 'b' => '12', 'c' => '123', 3 => '1234'], $callableKey, 3],
119126
];
120127
}
128+
129+
public static function arrayAnyDataProvider(): array {
130+
$callable = function ($value): bool {
131+
return strlen($value) > 2;
132+
};
133+
134+
$callableKey = function ($value, $key): bool {
135+
return is_numeric($key);
136+
};
137+
138+
return [
139+
[[], $callable, false],
140+
[['a', 'aa', 'aaa', 'aaaa'], $callable, true],
141+
[['a', 'aa'], $callable, false],
142+
[['a' => '1', 'b' => '12', 'c' => '123', 'd' => '1234'], $callable, true],
143+
[['a' => '1', 'b' => '12', 'c' => '123', 3 => '1234'], $callableKey, true],
144+
[['a' => '1', 'b' => '12', 'c' => '123', 'd' => '1234'], $callableKey, false],
145+
];
146+
}
121147
}

0 commit comments

Comments
 (0)