Method search()

Method search

int search(string haystack, string|int needle, int|void start, int|void end)
int search(array haystack, mixed needle, int|void start, int|void end)
mixed search(mapping haystack, mixed needle, mixed|void start)
mixed search(object haystack, mixed needle, mixed|void start, mixed ... extra_args)


Search for needle in haystack.

Parameter haystack

Item to search in. This can be one of:


When haystack is a string needle must be a string or an int, and the first occurrence of the string or int is returned.


When haystack is an array, needle is compared only to one value at a time in haystack.


When haystack is a mapping, search() tries to find the index connected to the data needle. That is, it tries to lookup the mapping backwards.


When haystack is an object implementing lfun::_search(), the result of calling lfun::_search() with needle, start and any extra_args 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 with needle is found. If needle is found haystack will be advanced to the element, and the iterator index will be returned. If needle is not found, haystack will be advanced to the end.

Parameter start

If the optional argument start is present search is started at this position. This has no effect on mappings.

Parameter end

If the optional argument end is present, the search will terminate at this position (exclusive) if not found earlier.


Returns the position of needle in haystack if found.

If not found the returned value depends on the type of haystack:






The value returned by lfun::_search().


If start is supplied to an iterator object without an lfun::_search(), haystack will need to implement Iterator()->set_index().


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()