Skip to content

Commit a7d6389

Browse files
committed
Add array_any implementation
1 parent 4d3ead7 commit a7d6389

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

ext/standard/array.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6700,6 +6700,27 @@ PHP_FUNCTION(array_find_key)
67006700
}
67016701
/* }}} */
67026702

6703+
/* {{{ Search within an array and returns true if an element is found. */
6704+
PHP_FUNCTION(array_any)
6705+
{
6706+
zval *array = NULL;
6707+
zend_fcall_info fci;
6708+
zend_fcall_info_cache fci_cache = empty_fcall_info_cache;
6709+
bool has_result = NULL;
6710+
6711+
ZEND_PARSE_PARAMETERS_START(2, 2)
6712+
Z_PARAM_ARRAY(array)
6713+
Z_PARAM_FUNC(fci, fci_cache)
6714+
ZEND_PARSE_PARAMETERS_END();
6715+
6716+
if (php_array_find(Z_ARR_P(array), fci, fci_cache, NULL, NULL, &has_result, false) != SUCCESS) {
6717+
RETURN_THROWS();
6718+
}
6719+
6720+
RETURN_BOOL(has_result);
6721+
}
6722+
/* }}} */
6723+
67036724
/* {{{ Applies the callback to the elements in given arrays. */
67046725
PHP_FUNCTION(array_map)
67056726
{

ext/standard/basic_functions.stub.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,6 +1901,8 @@ function array_find(array $array, callable $callback): mixed {}
19011901

19021902
function array_find_key(array $array, callable $callback): mixed {}
19031903

1904+
function array_any(array $array, callable $callback): bool {}
1905+
19041906
function array_map(?callable $callback, array $array, array ...$arrays): array {}
19051907

19061908
/**

ext/standard/basic_functions_arginfo.h

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
basic array_any test
3+
--FILE--
4+
<?php
5+
$array1 = [
6+
"a" => 1,
7+
"b" => 2,
8+
"c" => 3,
9+
"d" => 4,
10+
"e" => 5,
11+
];
12+
$array2 = [
13+
1, 2, 3, 4, 5
14+
];
15+
16+
var_dump(array_any($array1, fn($value) => $value > 3));
17+
var_dump(array_any($array2, fn($value) => $value > 3));
18+
var_dump(array_any($array2, fn($value) => $value > 5));
19+
var_dump(array_any([], fn($value) => true));
20+
var_dump(array_any($array1, fn($value, $key) => $key === "c"));
21+
var_dump(array_any($array1, fn($value, $key) => false));
22+
?>
23+
--EXPECT--
24+
bool(true)
25+
bool(true)
26+
bool(false)
27+
bool(false)
28+
bool(true)
29+
bool(false)

0 commit comments

Comments
 (0)