bug67633.phpt 544 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. --TEST--
  2. Bug #67633: A foreach on an array returned from a function not doing copy-on-write
  3. --FILE--
  4. <?php
  5. function id($x) {
  6. return $x;
  7. }
  8. function &ref_id(&$x) {
  9. return $x;
  10. }
  11. $c = 'c';
  12. $array = ['a', 'b', $c];
  13. foreach(id($array) as &$v) {
  14. $v .= 'q';
  15. }
  16. var_dump($array);
  17. foreach(ref_id($array) as &$v) {
  18. $v .= 'q';
  19. }
  20. var_dump($array);
  21. ?>
  22. --EXPECT--
  23. array(3) {
  24. [0]=>
  25. string(1) "a"
  26. [1]=>
  27. string(1) "b"
  28. [2]=>
  29. string(1) "c"
  30. }
  31. array(3) {
  32. [0]=>
  33. string(2) "aq"
  34. [1]=>
  35. string(2) "bq"
  36. [2]=>
  37. &string(2) "cq"
  38. }