bug53432.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. --TEST--
  2. Bug #53432: Assignment via string index access on an empty string converts to array
  3. --FILE--
  4. <?php
  5. $str = '';
  6. var_dump($str[0] = 'a');
  7. var_dump($str);
  8. $str = '';
  9. var_dump($str[5] = 'a');
  10. var_dump($str);
  11. $str = '';
  12. var_dump($str[-1] = 'a');
  13. var_dump($str);
  14. $str = '';
  15. try {
  16. var_dump($str['foo'] = 'a');
  17. } catch (\TypeError $e) {
  18. echo $e->getMessage() . \PHP_EOL;
  19. }
  20. var_dump($str);
  21. $str = '';
  22. try {
  23. var_dump($str[] = 'a');
  24. } catch (Error $e) {
  25. echo "Error: {$e->getMessage()}\n";
  26. }
  27. var_dump($str);
  28. $str = '';
  29. try {
  30. var_dump($str[0] += 1);
  31. } catch (Error $e) {
  32. echo "Error: {$e->getMessage()}\n";
  33. }
  34. var_dump($str);
  35. $str = '';
  36. try {
  37. var_dump($str[0][0] = 'a');
  38. } catch (Error $e) {
  39. echo "Error: {$e->getMessage()}\n";
  40. }
  41. var_dump($str);
  42. ?>
  43. --EXPECTF--
  44. string(1) "a"
  45. string(1) "a"
  46. string(1) "a"
  47. string(6) " a"
  48. Warning: Illegal string offset -1 in %s on line %d
  49. NULL
  50. string(0) ""
  51. Cannot access offset of type string on string
  52. string(0) ""
  53. Error: [] operator not supported for strings
  54. string(0) ""
  55. Error: Cannot use assign-op operators with string offsets
  56. string(0) ""
  57. Error: Cannot use string offset as an array
  58. string(0) ""