[0]=>
int(2)
[1]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
[2]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
[0]=>
int(2)
[1]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
[2]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
}
[2]=>
&array(3) {
[0]=>
int(2)
[1]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
[2]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
-
$a->b = null;
$a = null;
?>
---EXPECT--
-object(stdClass)#1 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["b"]=>
&array(3) {
[0]=>
int(2)
[1]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
[2]=>
- &array(3) {
- [0]=>
- int(2)
- [1]=>
- *RECURSION*
- [2]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
$a->x0->y1 = "ok\n";
echo $a->x0;
?>
---EXPECT--
-object(stdClass)#1 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["x0"]=>
- &object(stdClass)#2 (3) {
+ &object(stdClass)#%d (3) {
["y0"]=>
string(1) "b"
["y1"]=>
- &object(stdClass)#2 (3) {
- ["y0"]=>
- string(1) "b"
- ["y1"]=>
- *RECURSION*
- ["y2"]=>
- *RECURSION*
- }
+ *RECURSION*
["y2"]=>
- &object(stdClass)#2 (3) {
- ["y0"]=>
- string(1) "b"
- ["y1"]=>
- *RECURSION*
- ["y2"]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
ok
["static"]=>
array(1) {
["a"]=>
- &object(foo)#%d (2) {
- ["test":"foo":private]=>
- int(3)
- ["a"]=>
- object(Closure)#%d (1) {
- ["static"]=>
- array(1) {
- ["a"]=>
- *RECURSION*
- }
- }
- }
+ *RECURSION*
}
}
}
?>
===DONE===
--EXPECTF--
-object(Closure)#1 (1) {
+object(Closure)#%d (1) {
["static"]=>
array(1) {
["a"]=>
- &object(Closure)#1 (1) {
- ["static"]=>
- array(1) {
- ["a"]=>
- *RECURSION*
- }
- }
+ *RECURSION*
}
}
===DONE===
object(Closure)#%d (1) {
["static"]=>
array(1) {
- [%u|b%"x"]=>
- &object(Closure)#%d (1) {
- ["static"]=>
- array(1) {
- [%u|b%"x"]=>
- *RECURSION*
- }
- }
+ ["x"]=>
+ *RECURSION*
}
}
int(1)
["a"]=>
&array(1) {
["a"]=>
- &array(1) {
- ["a"]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
[0]=>
&array(1) {
[0]=>
- &array(1) {
- [0]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
int(1)
var_dump(gc_collect_cycles());
echo "ok\n"
?>
---EXPECT--
-object(stdClass)#1 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["a"]=>
- object(stdClass)#1 (1) {
- ["a"]=>
- *RECURSION*
- }
+ *RECURSION*
}
int(1)
ok
var_dump(gc_collect_cycles());
echo "ok\n"
?>
---EXPECT--
-object(stdClass)#1 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["a"]=>
array(1) {
[0]=>
- &object(stdClass)#1 (1) {
- ["a"]=>
- array(1) {
- [0]=>
- *RECURSION*
- }
- }
+ *RECURSION*
}
}
int(2)
[0]=>
&array(1) {
[0]=>
- &array(1) {
- [0]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
int(0)
var_dump(gc_collect_cycles());
echo "ok\n"
?>
---EXPECT--
-object(stdClass)#2 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["a"]=>
- object(stdClass)#2 (1) {
- ["a"]=>
- *RECURSION*
- }
+ *RECURSION*
}
int(0)
int(1)
var_dump(gc_collect_cycles());
echo "ok\n"
?>
---EXPECT--
-object(stdClass)#1 (1) {
+--EXPECTF--
+object(stdClass)#%d (1) {
["a"]=>
array(1) {
[0]=>
- &object(stdClass)#1 (1) {
- ["a"]=>
- array(1) {
- [0]=>
- *RECURSION*
- }
- }
+ *RECURSION*
}
}
int(0)
[0]=>
&array(1) {
[0]=>
- &array(1) {
- [0]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
int(1)
var_dump(gc_collect_cycles());
echo "ok\n"
?>
---EXPECT--
-object(Foo)#1 (1) {
+--EXPECTF--
+object(Foo)#%d (1) {
["a"]=>
- object(Foo)#1 (1) {
- ["a"]=>
- *RECURSION*
- }
+ *RECURSION*
}
__destruct
int(1)
var_dump($$test);
?>
---EXPECT--
-object(stdClass)#1 (2) {
+--EXPECTF--
+object(stdClass)#%d (2) {
["a"]=>
- &object(stdClass)#1 (2) {
- ["a"]=>
- *RECURSION*
- ["b"]=>
- array(1) {
- [0]=>
- int(2)
- }
- }
+ *RECURSION*
["b"]=>
array(1) {
[0]=>
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
array(4) {
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
}
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
array(4) {
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
}
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
array(4) {
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
[1]=>
&array(4) {
[0]=>
&string(2) "v1"
[1]=>
- &array(4) {
- ["k1"]=>
- &string(2) "v1"
- ["k2"]=>
- string(2) "v2"
- [0]=>
- &string(2) "v1"
- [1]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
}
[8]=>
&string(1) "z"
[9]=>
- &array(10) {
- [0]=>
- int(1)
- [1]=>
- int(2)
- [2]=>
- int(3)
- [3]=>
- &string(1) "a"
- [4]=>
- &string(1) "b"
- [5]=>
- &string(1) "c"
- [6]=>
- &string(1) "x"
- [7]=>
- &string(1) "y"
- [8]=>
- &string(1) "z"
- [9]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
Done
int(3)
}
[0]=>
- &array(4) {
- ["zero"]=>
- string(4) "zero"
- ["un"]=>
- string(3) "one"
- ["sub"]=>
- array(3) {
- [0]=>
- int(1)
- [1]=>
- int(2)
- [2]=>
- int(3)
- }
- [0]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
-Done
\ No newline at end of file
+Done
[3]=>
string(1) "2"
[4]=>
- &array(5) {
- [0]=>
- int(1)
- [1]=>
- float(3)
- [2]=>
- string(4) "zero"
- [3]=>
- string(1) "2"
- [4]=>
- *RECURSION*
- }
+ *RECURSION*
}
}
bool(true)
[1]=>
float(3)
[4]=>
- &array(5) {
- [0]=>
- int(1)
- [3]=>
- string(1) "2"
- [1]=>
- float(3)
- [4]=>
- *RECURSION*
- [2]=>
- string(4) "zero"
- }
+ *RECURSION*
[2]=>
string(4) "zero"
}
[2]=>
string(4) "zero"
}
-Done
\ No newline at end of file
+Done
break;
case IS_ARRAY:
myht = Z_ARRVAL_PP(struc);
- if (myht->nApplyCount > 1) {
+ if (++myht->nApplyCount > 1) {
PUTS("*RECURSION*\n");
+ --myht->nApplyCount;
return;
}
php_printf("%sarray(%d) {\n", COMMON, zend_hash_num_elements(myht));
goto head_done;
case IS_OBJECT:
myht = Z_OBJDEBUG_PP(struc, is_temp);
- if (myht && myht->nApplyCount > 1) {
+ if (myht && ++myht->nApplyCount > 1) {
PUTS("*RECURSION*\n");
+ --myht->nApplyCount;
return;
}
head_done:
if (myht) {
zend_hash_apply_with_arguments(myht TSRMLS_CC, (apply_func_args_t) php_element_dump_func, 1, level);
+ --myht->nApplyCount;
if (is_temp) {
zend_hash_destroy(myht);
efree(myht);