public static function difference($array)
    {
        if (empty($array))
            return [];

        if (func_num_args() == 1)
            return $array;

        $args = func_get_args();

        if (static::every($args, 'is_array'))
            return array_values(call_user_func_array('array_diff', $args));

        $rest = static::flatten(array_slice($args, 1), true);
        return static::values(static::filter($array, function($value) use ($rest) {
            return !static::contains($rest, $value);
        }));
    }
public static function difference($array)
    {
        if (empty($array))
            return [];

        if (func_num_args() == 1)
            return $array;

        $args = func_get_args();

        if (static::every($args, 'is_array'))
            return array_values(call_user_func_array('array_diff', $args));

        $rest = static::flatten(array_slice($args, 1), true);
        return static::values(static::filter($array, function($value) use ($rest) {
            return !static::contains($rest, $value);
        }));
    }
public static function difference ( $ array ) { if ( empty ( $ array ) ) return [ ] ; if ( func_num_args ( ) == 1 ) return $ array ; $ args = func_get_args ( ) ; if ( static :: every ( $ args , 'is_array' ) ) return array_values ( call_user_func_array ( 'array_diff' , $ args ) ) ; $ rest = static :: flatten ( array_slice ( $ args , 1 ) , true ) ; return static :: values ( static :: filter ( $ array , function ( $ value ) use ( $ rest ) { return ! static :: contains ( $ rest , $ value ) ; } ) ) ; }
Similar to without, but returns the values from array that are not present in the other arrays.

@category Array Functions

@param traversable $array multiple, the arrays to difference

@return array
Similar to without but returns the values from array that are not present in the other arrays .