} else if (Z_TYPE_P(entry) == IS_ARRAY) {
if (Z_REFCOUNTED_P(entry)) {
if (Z_IS_RECURSIVE_P(entry)) {
- php_error_docref(NULL, E_WARNING, "recursion detected");
+ zend_throw_error(NULL, "Recursion detected");
return;
}
Z_PROTECT_RECURSION_P(entry);
/*
* compact variations - arrays with references
*/
-echo "*** Testing compact() : usage variations - arrays containg references ***\n";
+echo "*** Testing compact() : usage variations - arrays containing references ***\n";
$a = 1;
$b = 2;
$c = 3;
$arr2[1][0][0][] = &$arr2;
$arr2[1][0][0][] = &$arr2[1];
$arr3 = array(&$string);
-var_dump(compact($arr1));
-var_dump(compact($arr2));
-var_dump(compact($arr3));
-echo "Done";
-?>
---EXPECTF--
-*** Testing compact() : usage variations - arrays containg references ***
-Warning: compact(): recursion detected in %s on line %d
-array(1) {
- ["a"]=>
- int(1)
+try {
+ var_dump(compact($arr1));
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
}
-Warning: compact(): recursion detected in %s on line %d
+try {
+ var_dump(compact($arr2));
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
+}
-Warning: compact(): recursion detected in %s on line %d
-array(2) {
- ["a"]=>
- int(1)
- ["b"]=>
- int(2)
+try {
+ var_dump(compact($arr3));
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
}
+?>
+
+DONE
+--EXPECT--
+*** Testing compact() : usage variations - arrays containing references ***
+Recursion detected
+Recursion detected
array(1) {
["c"]=>
int(3)
}
-Done
+
+DONE