diff --git a/ext/standard/array.c b/ext/standard/array.c index 70523d479ef4f..fdd60af98e7dd 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1395,7 +1395,7 @@ static int php_array_walk(zval *array, zval *userdata, int recursive) /* {{{ */ SEPARATE_ARRAY(zv); thash = Z_ARRVAL_P(zv); if (GC_IS_RECURSIVE(thash)) { - php_error_docref(NULL, E_WARNING, "recursion detected"); + zend_throw_error(NULL, "Recursion detected"); result = FAILURE; break; } @@ -1446,7 +1446,7 @@ static int php_array_walk(zval *array, zval *userdata, int recursive) /* {{{ */ target_hash = Z_OBJPROP_P(array); pos = zend_hash_iterator_pos(ht_iter, target_hash); } else { - php_error_docref(NULL, E_WARNING, "Iterated value is no longer an array or object"); + zend_type_error("Iterated value is no longer an array or object"); result = FAILURE; break; } diff --git a/ext/standard/tests/array/bug70713.phpt b/ext/standard/tests/array/bug70713.phpt index 7cd0a0f113f59..f24720607d1b6 100644 --- a/ext/standard/tests/array/bug70713.phpt +++ b/ext/standard/tests/array/bug70713.phpt @@ -19,8 +19,13 @@ class obj } $arr = array('string' => new obj); -array_walk_recursive($arr, 'settype'); + +try { + array_walk_recursive($arr, 'settype'); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} ?> ---EXPECTF-- -Warning: array_walk_recursive(): Iterated value is no longer an array or object in %s on line %d +--EXPECT-- +Iterated value is no longer an array or object