Method search()
- Method search
int
search(string
haystack
,string
|int
needle
,int
|void
start
)
int
search(array
haystack
,mixed
needle
,int
|void
start
)
mixed
search(mapping
haystack
,mixed
needle
,mixed
|void
start
)
mixed
search(object
haystack
,mixed
needle
,mixed
|void
start
)- Description
Search for
needle
inhaystack
. Return the position ofneedle
inhaystack
or-1
if not found.If the optional argument
start
is present search is started at this position.haystack
can have any of the following types:string
When
haystack
is a stringneedle
must be a string or an int, and the first occurrence of the string or int is returned.array
When
haystack
is an array,needle
is compared only to one value at a time inhaystack
.mapping
When
haystack
is a mapping, search() tries to find the index connected to the dataneedle
. That is, it tries to lookup the mapping backwards. Ifneedle
isn't present in the mapping, zero is returned, and zero_type() will return 1 for this zero.object
When
haystack
is an object implementing lfun::_search(), the result of calling lfun::_search() withneedle
will be returned.If
haystack
is an object that doesn't implement lfun::_search() it is assumed to be an Iterator, and implement Iterator()->index(), Iterator()->value(), and Iterator()->next(). search() will then start comparing elements with `==() until a match withneedle
is found. Ifneedle
is foundhaystack
will be advanced to the element, and the iterator index will be returned. Ifneedle
is not found,haystack
will be advanced to the end (and will thus evaluate to false), and a zero with zero_type 1 will be returned.- Note
If
start
is supplied to an iterator object without an lfun::_search(),haystack
will need to implement Iterator()->set_index().- Note
For mappings and object UNDEFINED will be returned when not found. In all other cases
-1
will be returned when not found.- See also
indices(), values(), zero_type(), has_value(), has_prefix(), has_suffix()