023.phpt 657 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. --TEST--
  2. Foreach by reference on nullsafe
  3. --FILE--
  4. <?php
  5. class Foo {
  6. public $bar;
  7. }
  8. $foo = new Foo();
  9. foreach ($foo?->bar as &$value) {
  10. var_dump($value);
  11. }
  12. // Don't convert $foo->bar into a reference.
  13. $foo->bar = [42];
  14. foreach ($foo?->bar as &$value) {
  15. var_dump($value);
  16. $value++;
  17. }
  18. var_dump($foo->bar);
  19. // But respect interior references.
  20. $ref =& $foo->bar[0];
  21. foreach ($foo?->bar as &$value) {
  22. var_dump($value);
  23. $value++;
  24. }
  25. var_dump($foo->bar);
  26. ?>
  27. --EXPECTF--
  28. Warning: foreach() argument must be of type array|object, null given in %s on line %d
  29. int(42)
  30. array(1) {
  31. [0]=>
  32. int(42)
  33. }
  34. int(42)
  35. array(1) {
  36. [0]=>
  37. &int(43)
  38. }