+static int apply_querystring_filter(zval *val)
+{
+ switch (Z_TYPE_P(val)) {
+ case IS_NULL:
+ return ZEND_HASH_APPLY_REMOVE;
+ case IS_ARRAY:
+ case IS_OBJECT:
+ zend_hash_apply(HASH_OF(val), apply_querystring_filter);
+ if (!zend_hash_num_elements(HASH_OF(val))) {
+ return ZEND_HASH_APPLY_REMOVE;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return ZEND_HASH_APPLY_KEEP;
+}
+