在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
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
PHP中是否有与some()函数等价的函数?
6条答案
按热度按时间sshcrbum1#
它不包括在内,但它们很容易创建。它使用SRFI-1名称
any
和every
,但可以重命名为some
和all
:ux6nzvsh2#
不,PHP标准库中没有短路等价物。有许多非短路解决方案,其中
array_reduce
可能最适合:实现你自己的
some
/any
/all
函数可能是值得的,或者使用一个库,它提供了一系列类似的函数式编程原语,例如:https://github.com/lstrojny/functional-php。hi3rlvi23#
有array_filter(),它根据给定回调函数的返回值返回给定数组的子集。如果子集是空的,那么它将相当于Some()返回false,如果它不是空的,那么它将匹配Some()返回true。
然而,这种方法不会短路,并且性能将与阵列的大小成反比。不过,这在真实的世界中应该没有关系,因为数组仍然必须变得非常大,或者在您注意到对性能的影响之前,array_filter被调用了很多次。
如果性能是最重要的,那么你必须自己循环数组,并在找到匹配项后立即跳出循环。
6g8kf2rb4#
如果没有找到满足“callback”函数条件的元素,则该函数返回null。
如果它找到一个满足条件的元素,它将返回它找到的第一个元素。
作为参数传递的“callback”函数必须返回true或false,这取决于元素是否满足条件。
6jjcrrmo5#
下面是一个PHP函数,它的工作方式类似于JavaScript Array.some()函数。
我相信代码是不言自明的,但如果你有任何问题,请随时问我。
在普通数组中的用法:
关联数组中的用法:
(类JavaScript对象数组/类JavaScript JSON)
使用OP数据:
lvjbypge6#
使用array_filter并提供回调。将其 Package 在另一个函数中以计算是否有任何结果