public static search ( array $array, mixed $search, boolean $field = false ) : boolean | mixed | ||
$array | array | The array to search |
$search | mixed | The value to search for |
$field | boolean | The field to search in, if not specified all fields will be searched |
Результат | boolean | mixed | False on failure or the array key on success |
public static function search(array $array, $search, $field = false)
{
// *grumbles* stupid PHP type system
$search = (string) $search;
foreach ($array as $key => $elem) {
// *grumbles* stupid PHP type system
$key = (string) $key;
if ($field) {
if (is_object($elem) && $elem->{$field} === $search) {
return $key;
} elseif (is_array($elem) && $elem[$field] === $search) {
return $key;
} elseif (is_scalar($elem) && $elem === $search) {
return $key;
}
} else {
if (is_object($elem)) {
$elem = (array) $elem;
if (in_array($search, $elem)) {
return $key;
}
} elseif (is_array($elem) && in_array($search, $elem)) {
return $key;
} elseif (is_scalar($elem) && $elem === $search) {
return $key;
}
}
}
return false;
}
public function testSearch() { $users = array(1 => (object) array('username' => 'brandon', 'age' => 20), 2 => (object) array('username' => 'matt', 'age' => 27), 3 => (object) array('username' => 'jane', 'age' => 53), 4 => (object) array('username' => 'john', 'age' => 41), 5 => (object) array('username' => 'steve', 'age' => 11), 6 => (object) array('username' => 'fred', 'age' => 42), 7 => (object) array('username' => 'rasmus', 'age' => 21), 8 => (object) array('username' => 'don', 'age' => 15), 9 => array('username' => 'darcy', 'age' => 33)); $test = array(1 => 'brandon', 2 => 'devon', 3 => array('troy'), 4 => 'annie'); isFalse(Arr::search($test, 'bob')); is(3, Arr::search($test, 'troy')); is(4, Arr::search($test, 'annie')); is(2, Arr::search($test, 'devon', 'devon')); is(7, Arr::search($users, 'rasmus', 'username')); is(9, Arr::search($users, 'darcy', 'username')); is(1, Arr::search($users, 'brandon')); }