Ror*_*ory 17 javascript php functional-programming
在JavaScript中,我们可以:
function isBiggerThan10(element, index, array) {
return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10); // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
是否有PHP等效的some()函数?
dec*_*eze 13
不,PHP标准库中没有短路等效项.有许多非短路解决方案,其中array_reduce可能最适合:
var_dump(array_reduce([2, 5, 8, 1, 4], function ($isBigger, $num) {
return $isBigger || $num > 10;
}));
Run Code Online (Sandbox Code Playgroud)
可能值得实现您自己的some/ any/ all函数,或者使用提供这样的函数式编程原语集合的库,例如https://github.com/lstrojny/functional-php.
Syl*_*ter 13
它不包括在内,但很容易创建.这使用SRFI-1名称any,every但可以重命名,some并且all:
function array_any(array $array, callable $fn) {
foreach ($array as $value) {
if($fn($value)) {
return true;
}
}
return false;
}
function array_every(array $array, callable $fn) {
foreach ($array as $value) {
if(!$fn($value)) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)