array_shuffle_basic.phpt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. --TEST--
  2. array_shuffle(): Test return type and value for expected input
  3. --FILE--
  4. <?php
  5. /*
  6. * proto bool shuffle ( array &$array )
  7. * Function is implemented in ext/standard/array.c
  8. */
  9. $numbers = range(1, 20);
  10. echo "*** testing array_shuffle \n";
  11. $a = array();
  12. var_dump(shuffle($a));
  13. var_dump($a);
  14. $a = array(1);
  15. var_dump(shuffle($a));
  16. var_dump($a);
  17. $a = array(2 => 1);
  18. var_dump(shuffle($a));
  19. var_dump($a);
  20. $a = array("a" => 1);
  21. var_dump(shuffle($a));
  22. var_dump($a);
  23. $a = array(array(1, 2, 3));
  24. var_dump(shuffle($a));
  25. var_dump($a);
  26. $a = array(1, 1, 1, 1);
  27. var_dump(shuffle($a));
  28. var_dump($a);
  29. $arr1 = array(5 => 1, 6 => 2, 7 => 3, 8 => 9);
  30. $arr2 = array(5 => 1, 6 => 2, 7 => 3, 8 => 9);
  31. shuffle($arr1);
  32. echo "this should be 0->...." . count(array_diff($arr1, $arr2)) . "\n";
  33. echo "this should be 4->...." . count(array_intersect($arr1, $arr2)) . "\n";
  34. $bigarray = range(1, 400);
  35. shuffle($bigarray);
  36. echo "this should be 400->...." . count($bigarray) . "\n";
  37. echo "*** testing pass by reference \n";
  38. $original = $bigarray;
  39. shuffle($bigarray);
  40. $diffarray = array_diff_assoc($original, $bigarray);
  41. if (count($diffarray) < 350) {
  42. // with 400 entries, the probability that 50 entries or more get the same
  43. // key-> value association should be so close to zero it wont happen in the lifetime of the
  44. // universe.
  45. echo "shuffled array seems to be similar to original\n";
  46. var_dump($original);
  47. var_dump($bigarray);
  48. } else {
  49. echo "test passed \n";
  50. }
  51. ?>
  52. --EXPECT--
  53. *** testing array_shuffle
  54. bool(true)
  55. array(0) {
  56. }
  57. bool(true)
  58. array(1) {
  59. [0]=>
  60. int(1)
  61. }
  62. bool(true)
  63. array(1) {
  64. [0]=>
  65. int(1)
  66. }
  67. bool(true)
  68. array(1) {
  69. [0]=>
  70. int(1)
  71. }
  72. bool(true)
  73. array(1) {
  74. [0]=>
  75. array(3) {
  76. [0]=>
  77. int(1)
  78. [1]=>
  79. int(2)
  80. [2]=>
  81. int(3)
  82. }
  83. }
  84. bool(true)
  85. array(4) {
  86. [0]=>
  87. int(1)
  88. [1]=>
  89. int(1)
  90. [2]=>
  91. int(1)
  92. [3]=>
  93. int(1)
  94. }
  95. this should be 0->....0
  96. this should be 4->....4
  97. this should be 400->....400
  98. *** testing pass by reference
  99. test passed