017.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. --TEST--
  2. Test strict comparison with match expression jump table
  3. --FILE--
  4. <?php
  5. function wrong() {
  6. throw new Exception();
  7. }
  8. function test_int($char) {
  9. return match ($char) {
  10. 0 => wrong(),
  11. 1 => wrong(),
  12. 2 => wrong(),
  13. 3 => wrong(),
  14. 4 => wrong(),
  15. 5 => wrong(),
  16. 6 => wrong(),
  17. 7 => wrong(),
  18. 8 => wrong(),
  19. 9 => wrong(),
  20. default => 'Not matched',
  21. };
  22. }
  23. foreach (range(0, 9) as $int) {
  24. var_dump((string) $int);
  25. var_dump(test_int((string) $int));
  26. }
  27. function test_string($int) {
  28. return match ($int) {
  29. '0' => wrong(),
  30. '1' => wrong(),
  31. '2' => wrong(),
  32. '3' => wrong(),
  33. '4' => wrong(),
  34. '5' => wrong(),
  35. '6' => wrong(),
  36. '7' => wrong(),
  37. '8' => wrong(),
  38. '9' => wrong(),
  39. default => 'Not matched',
  40. };
  41. }
  42. foreach (range(0, 9) as $int) {
  43. var_dump($int);
  44. var_dump(test_string($int));
  45. }
  46. ?>
  47. --EXPECT--
  48. string(1) "0"
  49. string(11) "Not matched"
  50. string(1) "1"
  51. string(11) "Not matched"
  52. string(1) "2"
  53. string(11) "Not matched"
  54. string(1) "3"
  55. string(11) "Not matched"
  56. string(1) "4"
  57. string(11) "Not matched"
  58. string(1) "5"
  59. string(11) "Not matched"
  60. string(1) "6"
  61. string(11) "Not matched"
  62. string(1) "7"
  63. string(11) "Not matched"
  64. string(1) "8"
  65. string(11) "Not matched"
  66. string(1) "9"
  67. string(11) "Not matched"
  68. int(0)
  69. string(11) "Not matched"
  70. int(1)
  71. string(11) "Not matched"
  72. int(2)
  73. string(11) "Not matched"
  74. int(3)
  75. string(11) "Not matched"
  76. int(4)
  77. string(11) "Not matched"
  78. int(5)
  79. string(11) "Not matched"
  80. int(6)
  81. string(11) "Not matched"
  82. int(7)
  83. string(11) "Not matched"
  84. int(8)
  85. string(11) "Not matched"
  86. int(9)
  87. string(11) "Not matched"