Method filter()
- Method
filter
mixed
filter(mixed
arr
,void
|mixed
fun
,mixed
...extra
)- Description
Filters the elements in
arr
throughfun
.- Parameter
arr
arr
is treated as a set of elements to be filtered, as follows:array
Each element is filtered with
fun
. The return value is of the same type asarr
and it contains the elements thatfun
accepted.fun
is applied in order to each element, and that order is retained between the kept elements.mapping
The values are filtered with
fun
, and the index/value pairs it accepts are kept in the returned mapping.program
The program is treated as a mapping containing the identifiers that are indexable from it and their values.
object
If there is a lfun::cast method in the object, it's called to try to cast the object to an array, a mapping, or a multiset, in that order, which is then filtered as described above.
- Parameter
fun
Unless something else is mentioned above,
fun
is used as filter like this:array
When both
arr
andfun
are arrays, they should have the same lengths. In this case, the elements inarr
are kept where the corresponding positions infun
are nonzero.function
(mixed
... :mixed
)fun
is called for each element. It gets the current element as the first argument andextra
as the rest. The element is kept iffun
returns true, otherwise it's filtered out.object
The object is used as a
function
like above, i.e. the lfun::`() method in it is called.multiset
fun
is indexed with each element. The element is kept if the result is nonzero, otherwise it's filtered out.zero
|void
Each element that is callable is called with
extra
as arguments. The element is kept if the result of the call is nonzero, otherwise it's filtered out. Elements that aren't callable are also filtered out.string
Each element is indexed with the given string. If the result of that is zero then the element is filtered out, otherwise the result is called with
extra
as arguments. The element is kept if the return value is nonzero, otherwise it's filtered out.This is typically used when
arr
is a collection of objects, andfun
is the name of some predicate function in them.- Note
The function is never destructive on
arr
.- See also
map(),
foreach()