PageRenderTime 47ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/spec/tests/expressions/primary_expressions/intrinsics_list.php

http://github.com/facebook/hiphop-php
PHP | 138 lines | 91 code | 40 blank | 7 comment | 0 complexity | ad0e16bb570c4a2922e903b2f5438bba MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?php
  2. /*
  3. +-------------------------------------------------------------+
  4. | Copyright (c) 2015 Facebook, Inc. (http://www.facebook.com) |
  5. +-------------------------------------------------------------+
  6. */
  7. error_reporting(-1);
  8. echo "--------- test with full and omitted LHS vars -------------\n";
  9. $v = list($min, $max, $avg) = array(0, 100, 67);
  10. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  11. print_r($v);
  12. $v = list($min, $max, $avg) = array(2 => 67, 1 => 100, 0 => 0);
  13. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  14. print_r($v);
  15. list($min, , $avg) = array(0, 100, 67);
  16. echo "\$min: $min, , \$avg: $avg\n";
  17. list(, $max, $avg) = array(0, 100, 67);
  18. echo ", \$max: $max, \$avg: $avg\n";
  19. list(, , $avg) = array(0, 100, 67);
  20. echo ", , \$avg: $avg\n";
  21. list($min, $max, ) = array(0, 100, 67);
  22. echo "\$min: $min, \$max: $max,\n";
  23. list($min, $max) = array(0, 100, 67);
  24. echo "\$min: $min, \$max: $max\n";
  25. list($min, , ) = array(0, 100, 67);
  26. echo "\$min: $min, ,\n";
  27. list($min) = array(0, 100, 67);
  28. echo "\$min: $min\n";
  29. echo "--------- test with more array elements than variables -------------\n";
  30. $v = list($min, $max, $avg) = array(0, 100, 67, 22, 33);
  31. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  32. print_r($v);
  33. echo "--------- test with fewer array elements than variables -------------\n";
  34. var_dump(isset($min));
  35. var_dump($min);
  36. var_dump(isset($max));
  37. var_dump($max);
  38. var_dump(isset($avg));
  39. var_dump($avg);
  40. $v = list($min, $max, $avg) = array(100, 500); // Undefined offset: 2
  41. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  42. print_r($v);
  43. var_dump(isset($min)); // TRUE
  44. var_dump($min);
  45. var_dump(isset($max)); // TRUE
  46. var_dump($max);
  47. var_dump(isset($avg)); // FALSE
  48. var_dump($avg);
  49. echo "--------- test with sufficient array elements but not consecutive keys -------------\n";
  50. $v = list($min, $max, $avg) = array(0, 2 => 100, 4 => 67);
  51. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  52. print_r($v);
  53. var_dump(isset($min)); // TRUE
  54. var_dump($min);
  55. var_dump(isset($max)); // FALSE
  56. var_dump($max);
  57. var_dump(isset($avg)); // TRUE
  58. var_dump($avg);
  59. echo "--------- test with NULL rather than array -------------\n";
  60. //$v = list($min, $max, $avg); // syntax error, unexpected ';', expecting '='
  61. $v = list($min, $max, $avg) = NULL;
  62. var_dump(isset($v)); // FALSE
  63. echo "--------- test with mixed array -------------\n";
  64. $v = list($min, $max, $avg) = [10, "a" => 20, 30, "b" => 40, 50];
  65. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  66. print_r($v);
  67. echo "--------- test with non-numeric array -------------\n";
  68. $v = list($min, $max, $avg) = ["x" => 10, "a" => 20, "y" => 30];
  69. // Undefined offset: 2, 1, 0
  70. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  71. print_r($v);
  72. var_dump(isset($min)); // FALSE
  73. var_dump(isset($max)); // FALSE
  74. var_dump(isset($avg)); // FALSE
  75. echo "--------- test with array element being an array -------------\n";
  76. $v = list($min, $max, $avg) = array(0, array(100, 67)); // Undefined offset: 2
  77. print_r($v);
  78. var_dump(isset($min)); // TRUE
  79. var_dump($min);
  80. var_dump(isset($max)); // TRUE
  81. var_dump($max); // array(100, 67)
  82. var_dump(isset($avg)); // FALSE
  83. var_dump($avg);
  84. echo "--------- test with nested lists -------------\n";
  85. $v = list($min, list($max, $avg)) = [0, [1 => 67, 99, 0 => 100], 33];
  86. echo "\$min: $min, \$max: $max, \$avg: $avg\n";
  87. print_r($v);
  88. echo "--------- test with target vars being array elements -------------\n";
  89. $v = list($a[0], $a[2], $a[4]) = array(0, 100, 67);
  90. print_r($a);
  91. print_r($v);
  92. echo "--------- test with no variables -------------\n";
  93. $v = list() = array(0, 100, 67);
  94. print_r($v);
  95. $v = list(,) = array(0, 100, 67);
  96. print_r($v);
  97. $v = list(,,) = array(0, 100, 67);
  98. print_r($v);