array_diff_variation4.phpt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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 $arr2
  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 $arr2
  80. $iterator = 1;
  81. foreach($values as $value) {
  82. echo "\n Iteration: $iterator \n";
  83. var_dump( array_diff($array, $value) );
  84. $iterator++;
  85. };
  86. echo "Done";
  87. ?>
  88. --EXPECTF--
  89. *** Testing array_diff() : usage variations ***
  90. Iteration: 1
  91. array(2) {
  92. [0]=>
  93. int(1)
  94. [1]=>
  95. int(2)
  96. }
  97. Iteration: 2
  98. array(1) {
  99. [1]=>
  100. int(2)
  101. }
  102. Iteration: 3
  103. array(2) {
  104. [0]=>
  105. int(1)
  106. [1]=>
  107. int(2)
  108. }
  109. Iteration: 4
  110. array(2) {
  111. [0]=>
  112. int(1)
  113. [1]=>
  114. int(2)
  115. }
  116. Iteration: 5
  117. array(1) {
  118. [1]=>
  119. int(2)
  120. }
  121. Iteration: 6
  122. array(2) {
  123. [0]=>
  124. int(1)
  125. [1]=>
  126. int(2)
  127. }
  128. Iteration: 7
  129. array(2) {
  130. [0]=>
  131. int(1)
  132. [1]=>
  133. int(2)
  134. }
  135. Iteration: 8
  136. array(2) {
  137. [0]=>
  138. int(1)
  139. [1]=>
  140. int(2)
  141. }
  142. Iteration: 9
  143. array(2) {
  144. [0]=>
  145. int(1)
  146. [1]=>
  147. int(2)
  148. }
  149. Iteration: 10
  150. array(2) {
  151. [0]=>
  152. int(1)
  153. [1]=>
  154. int(2)
  155. }
  156. Done