@@ -96,11 +96,13 @@ ZEND_END_ARG_INFO()
96
96
ZEND_BEGIN_ARG_INFO_EX (arginfo_filter_input_array , 0 , 0 , 1 )
97
97
ZEND_ARG_INFO (0 , type )
98
98
ZEND_ARG_INFO (0 , definition )
99
+ ZEND_ARG_INFO (0 , add_empty )
99
100
ZEND_END_ARG_INFO ()
100
101
101
102
ZEND_BEGIN_ARG_INFO_EX (arginfo_filter_var_array , 0 , 0 , 1 )
102
103
ZEND_ARG_INFO (0 , data )
103
104
ZEND_ARG_INFO (0 , definition )
105
+ ZEND_ARG_INFO (0 , add_empty )
104
106
ZEND_END_ARG_INFO ()
105
107
106
108
ZEND_BEGIN_ARG_INFO (arginfo_filter_list , 0 )
@@ -676,7 +678,7 @@ static void php_filter_call(zval **filtered, long filter, zval **filter_args, co
676
678
}
677
679
/* }}} */
678
680
679
- static void php_filter_array_handler (zval * input , zval * * op , zval * return_value TSRMLS_DC ) /* {{{ */
681
+ static void php_filter_array_handler (zval * input , zval * * op , zval * return_value , zend_bool add_empty TSRMLS_DC ) /* {{{ */
680
682
{
681
683
char * arg_key ;
682
684
uint arg_key_len ;
@@ -711,7 +713,9 @@ static void php_filter_array_handler(zval *input, zval **op, zval *return_value
711
713
RETURN_FALSE ;
712
714
}
713
715
if (zend_hash_find (Z_ARRVAL_P (input ), arg_key , arg_key_len , (void * * )& tmp ) != SUCCESS ) {
714
- add_assoc_null_ex (return_value , arg_key , arg_key_len );
716
+ if (add_empty ) {
717
+ add_assoc_null_ex (return_value , arg_key , arg_key_len );
718
+ }
715
719
} else {
716
720
zval * nval ;
717
721
@@ -808,15 +812,16 @@ PHP_FUNCTION(filter_var)
808
812
}
809
813
/* }}} */
810
814
811
- /* {{{ proto mixed filter_input_array(constant type, [, mixed options]])
815
+ /* {{{ proto mixed filter_input_array(constant type, [, mixed options [, bool add_empty] ]])
812
816
* Returns an array with all arguments defined in 'definition'.
813
817
*/
814
818
PHP_FUNCTION (filter_input_array )
815
819
{
816
820
long fetch_from ;
817
821
zval * array_input = NULL , * * op = NULL ;
822
+ zend_bool add_empty = 1 ;
818
823
819
- if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "l|Z " , & fetch_from , & op ) == FAILURE ) {
824
+ if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "l|Zb " , & fetch_from , & op , & add_empty ) == FAILURE ) {
820
825
return ;
821
826
}
822
827
@@ -852,18 +857,19 @@ PHP_FUNCTION(filter_input_array)
852
857
}
853
858
}
854
859
855
- php_filter_array_handler (array_input , op , return_value TSRMLS_CC );
860
+ php_filter_array_handler (array_input , op , return_value , add_empty TSRMLS_CC );
856
861
}
857
862
/* }}} */
858
863
859
- /* {{{ proto mixed filter_var_array(array data, [, mixed options]])
864
+ /* {{{ proto mixed filter_var_array(array data, [, mixed options [, bool add_empty] ]])
860
865
* Returns an array with all arguments defined in 'definition'.
861
866
*/
862
867
PHP_FUNCTION (filter_var_array )
863
868
{
864
869
zval * array_input = NULL , * * op = NULL ;
870
+ zend_bool add_empty = 1 ;
865
871
866
- if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "a|Z " , & array_input , & op ) == FAILURE ) {
872
+ if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "a|Zb " , & array_input , & op , & add_empty ) == FAILURE ) {
867
873
return ;
868
874
}
869
875
@@ -874,7 +880,7 @@ PHP_FUNCTION(filter_var_array)
874
880
RETURN_FALSE ;
875
881
}
876
882
877
- php_filter_array_handler (array_input , op , return_value TSRMLS_CC );
883
+ php_filter_array_handler (array_input , op , return_value , add_empty TSRMLS_CC );
878
884
}
879
885
/* }}} */
880
886
0 commit comments