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