public static function first($value)
    {

        if (is_array($value) && $value) {
            reset($value);
            return current($value);
        }

        if (!$value) {
            return null;
        }

        if (is_string($value)) {
            return $value[0];
        }

        if (!is_object($value)) {
            return null;
        }

        if ($value instanceof ArrayAccess && isset($value[0])) {
            return $value[0];
        }

        if (!$value instanceof Traversable) {
            return null;
        }

        foreach ($value as $key=>$item) {
            return $item;
        }

        return null;

    }
public static function first($value)
    {

        if (is_array($value) && $value) {
            reset($value);
            return current($value);
        }

        if (!$value) {
            return null;
        }

        if (is_string($value)) {
            return $value[0];
        }

        if (!is_object($value)) {
            return null;
        }

        if ($value instanceof ArrayAccess && isset($value[0])) {
            return $value[0];
        }

        if (!$value instanceof Traversable) {
            return null;
        }

        foreach ($value as $key=>$item) {
            return $item;
        }

        return null;

    }
public static function first ( $ value ) { if ( is_array ( $ value ) && $ value ) { reset ( $ value ) ; return current ( $ value ) ; } if ( ! $ value ) { return null ; } if ( is_string ( $ value ) ) { return $ value [ 0 ] ; } if ( ! is_object ( $ value ) ) { return null ; } if ( $ value instanceof ArrayAccess && isset ( $ value [ 0 ] ) ) { return $ value [ 0 ] ; } if ( ! $ value instanceof Traversable ) { return null ; } foreach ( $ value as $ key => $ item ) { return $ item ; } return null ; }
Return the first item fo the passed value. (First array item, first letter,
first object item.

@param mixed $value

@return mixed
Return the first item fo the passed value . ( First array item first letter first object item .