|
|
|
@ -2992,10 +2992,12 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa |
|
|
|
intersect_data_compare_func = zval_compare; |
|
|
|
} |
|
|
|
|
|
|
|
if (Z_TYPE_PP(args[0]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array"); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
for (i = 0; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
array_init(return_value); |
|
|
|
@ -3004,12 +3006,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa |
|
|
|
if (p->nKeyLength == 0) { |
|
|
|
ok = 1; |
|
|
|
for (i = 1; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
zval_dtor(return_value); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE || |
|
|
|
if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE || |
|
|
|
(intersect_data_compare_func && |
|
|
|
intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) { |
|
|
|
ok = 0; |
|
|
|
@ -3023,12 +3020,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa |
|
|
|
} else { |
|
|
|
ok = 1; |
|
|
|
for (i = 1; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
zval_dtor(return_value); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE || |
|
|
|
if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE || |
|
|
|
(intersect_data_compare_func && |
|
|
|
intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) { |
|
|
|
ok = 0; |
|
|
|
@ -3470,10 +3462,12 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty |
|
|
|
diff_data_compare_func = zval_compare; |
|
|
|
} |
|
|
|
|
|
|
|
if (Z_TYPE_PP(args[0]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array"); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
for (i = 0; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
array_init(return_value); |
|
|
|
@ -3482,12 +3476,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty |
|
|
|
if (p->nKeyLength == 0) { |
|
|
|
ok = 1; |
|
|
|
for (i = 1; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
zval_dtor(return_value); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS && |
|
|
|
if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS && |
|
|
|
(!diff_data_compare_func || |
|
|
|
diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) { |
|
|
|
ok = 0; |
|
|
|
@ -3501,12 +3490,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty |
|
|
|
} else { |
|
|
|
ok = 1; |
|
|
|
for (i = 1; i < argc; i++) { |
|
|
|
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { |
|
|
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); |
|
|
|
zval_dtor(return_value); |
|
|
|
RETVAL_NULL(); |
|
|
|
goto out; |
|
|
|
} else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS && |
|
|
|
if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS && |
|
|
|
(!diff_data_compare_func || |
|
|
|
diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) { |
|
|
|
ok = 0; |
|
|
|
|