array_diff_variation3.phpt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. --TEST--
  2. Test array_diff() function : usage variations - array with different data types as values
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_diff(array $arr1, array $arr2 [, array ...])
  6. * Description: Returns the entries of $arr1 that have values which are not
  7. * present in any of the others arguments.
  8. * Source code: ext/standard/array.c
  9. */
  10. /*
  11. * Test how array_diff() compares indexed arrays containing different
  12. * data types as values in place of $arr1
  13. */
  14. echo "*** Testing array_diff() : usage variations ***\n";
  15. // Initialise function arguments not being substituted (if any)
  16. $array = array(1, 2);
  17. //get an unset variable
  18. $unset_var = 10;
  19. unset ($unset_var);
  20. //get heredoc
  21. $heredoc = <<<END
  22. This is a heredoc
  23. END;
  24. //array of values to iterate over
  25. $values = array(
  26. /*1*/"empty array" => array(),
  27. /*2*/
  28. "int" => array(
  29. // int data
  30. 0,
  31. 1,
  32. 12345,
  33. -2345),
  34. /*3*/
  35. "float" => array(
  36. // float data
  37. 10.5,
  38. -10.5,
  39. 12.3456789000e10,
  40. 12.3456789000E-10,
  41. .5),
  42. /*4*/
  43. "null" => array(
  44. // null data
  45. NULL,
  46. null),
  47. /*5*/
  48. "boolean" => array(
  49. // boolean data
  50. true,
  51. false,
  52. TRUE,
  53. FALSE),
  54. /*6*/
  55. "empty" => array(
  56. // empty data
  57. "",
  58. ''),
  59. /*7*/
  60. "string" => array(
  61. // string data
  62. "string",
  63. 'string',
  64. $heredoc),
  65. /*8*/
  66. "binary" => array(
  67. // binary data
  68. b"binary",
  69. (binary)"binary"),
  70. /*9*/
  71. "undefined" => array(
  72. // undefined data
  73. @$undefined_var),
  74. /*10*/
  75. "unset" => array(
  76. // unset data
  77. @$unset_var)
  78. );
  79. // loop through each element of the array for arr1
  80. $iterator = 1;
  81. foreach($values as $value) {
  82. echo "\n Iteration: $iterator \n";
  83. var_dump( array_diff($value, $array) );
  84. $iterator++;
  85. };
  86. echo "Done";
  87. ?>
  88. --EXPECTF--
  89. *** Testing array_diff() : usage variations ***
  90. Iteration: 1
  91. array(0) {
  92. }
  93. Iteration: 2
  94. array(3) {
  95. [0]=>
  96. int(0)
  97. [2]=>
  98. int(12345)
  99. [3]=>
  100. int(-2345)
  101. }
  102. Iteration: 3
  103. array(5) {
  104. [0]=>
  105. float(10.5)
  106. [1]=>
  107. float(-10.5)
  108. [2]=>
  109. float(123456789000)
  110. [3]=>
  111. float(1.23456789E-9)
  112. [4]=>
  113. float(0.5)
  114. }
  115. Iteration: 4
  116. array(2) {
  117. [0]=>
  118. NULL
  119. [1]=>
  120. NULL
  121. }
  122. Iteration: 5
  123. array(2) {
  124. [1]=>
  125. bool(false)
  126. [3]=>
  127. bool(false)
  128. }
  129. Iteration: 6
  130. array(2) {
  131. [0]=>
  132. string(0) ""
  133. [1]=>
  134. string(0) ""
  135. }
  136. Iteration: 7
  137. array(3) {
  138. [0]=>
  139. string(6) "string"
  140. [1]=>
  141. string(6) "string"
  142. [2]=>
  143. string(17) "This is a heredoc"
  144. }
  145. Iteration: 8
  146. array(2) {
  147. [0]=>
  148. string(6) "binary"
  149. [1]=>
  150. string(6) "binary"
  151. }
  152. Iteration: 9
  153. array(1) {
  154. [0]=>
  155. NULL
  156. }
  157. Iteration: 10
  158. array(1) {
  159. [0]=>
  160. NULL
  161. }
  162. Done