yield_by_reference.phpt 527 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. --TEST--
  2. Generators can yield by-reference
  3. --FILE--
  4. <?php
  5. function &iter(array &$array) {
  6. foreach ($array as $key => &$value) {
  7. yield $key => $value;
  8. }
  9. }
  10. $array = [1, 2, 3];
  11. $iter = iter($array);
  12. foreach ($iter as &$value) {
  13. $value *= -1;
  14. }
  15. var_dump($array);
  16. $array = [1, 2, 3];
  17. foreach (iter($array) as &$value) {
  18. $value *= -1;
  19. }
  20. var_dump($array);
  21. ?>
  22. --EXPECT--
  23. array(3) {
  24. [0]=>
  25. int(-1)
  26. [1]=>
  27. int(-2)
  28. [2]=>
  29. &int(-3)
  30. }
  31. array(3) {
  32. [0]=>
  33. int(-1)
  34. [1]=>
  35. int(-2)
  36. [2]=>
  37. &int(-3)
  38. }