1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- --TEST--
- WeakMap iteration
- --FILE--
- <?php
- $map = new WeakMap;
- echo "\nEmpty loop:\n";
- foreach ($map as $key => $value) {
- var_dump($key, $value);
- }
- echo "\nSimple loop:\n";
- $obj0 = new stdClass;
- $obj1 = new stdClass;
- $obj2 = new stdClass;
- $map[$obj0] = 0;
- $map[$obj1] = 1;
- $map[$obj2] = 2;
- foreach ($map as $key => $value) {
- var_dump($key, $value);
- }
- echo "\nObject removed during loop:\n";
- foreach ($map as $key => $value) {
- if (isset($obj1) && $key === $obj1) unset($obj1);
- var_dump($key, $value);
- }
- echo "\nBy reference iteration:\n";
- foreach ($map as $key => &$value) {
- $value++;
- }
- var_dump($map);
- ?>
- --EXPECT--
- Empty loop:
- Simple loop:
- object(stdClass)#2 (0) {
- }
- int(0)
- object(stdClass)#3 (0) {
- }
- int(1)
- object(stdClass)#4 (0) {
- }
- int(2)
- Object removed during loop:
- object(stdClass)#2 (0) {
- }
- int(0)
- object(stdClass)#3 (0) {
- }
- int(1)
- object(stdClass)#4 (0) {
- }
- int(2)
- By reference iteration:
- object(WeakMap)#1 (2) {
- [0]=>
- array(2) {
- ["key"]=>
- object(stdClass)#2 (0) {
- }
- ["value"]=>
- &int(1)
- }
- [1]=>
- array(2) {
- ["key"]=>
- object(stdClass)#4 (0) {
- }
- ["value"]=>
- &int(3)
- }
- }
|