JBZoo\Utils\Arr::search PHP Method

    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;
    }

Usage Example

Ejemplo n.º 1
0
 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'));
 }