array_diff_variation7.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. --TEST--
  2. Test array_diff() function : usage variations - arrays containing referenced variables
  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 arrays that
  12. * 1. Contain referenced variables
  13. * 2. Have been referenced to each other
  14. */
  15. echo "*** Testing array_diff() : usage variations ***\n";
  16. $a = 'a';
  17. $arr1 = array ("&$a", 'b', 'c');
  18. $arr2 = array (1, 2, 3);
  19. echo "-- Basic Comparison --\n";
  20. var_dump(array_diff($arr1, $arr2));
  21. var_dump(array_diff($arr2, $arr1));
  22. $a = 1;
  23. echo "-- \$a changed --\n";
  24. var_dump(array_diff($arr1, $arr2));
  25. var_dump(array_diff($arr2, $arr1));
  26. $arr2 = &$arr1;
  27. echo "-- Arrays referenced to each other --\n";
  28. var_dump(array_diff($arr1, $arr2));
  29. var_dump(array_diff($arr2, $arr1));
  30. $arr1 = array('x', 'y', 'z');
  31. echo "-- \$arr1 changed --\n";
  32. var_dump(array_diff($arr1, $arr2));
  33. var_dump(array_diff($arr2, $arr1));
  34. echo "Done";
  35. ?>
  36. --EXPECTF--
  37. *** Testing array_diff() : usage variations ***
  38. -- Basic Comparison --
  39. array(3) {
  40. [0]=>
  41. string(2) "&a"
  42. [1]=>
  43. string(1) "b"
  44. [2]=>
  45. string(1) "c"
  46. }
  47. array(3) {
  48. [0]=>
  49. int(1)
  50. [1]=>
  51. int(2)
  52. [2]=>
  53. int(3)
  54. }
  55. -- $a changed --
  56. array(3) {
  57. [0]=>
  58. string(2) "&a"
  59. [1]=>
  60. string(1) "b"
  61. [2]=>
  62. string(1) "c"
  63. }
  64. array(3) {
  65. [0]=>
  66. int(1)
  67. [1]=>
  68. int(2)
  69. [2]=>
  70. int(3)
  71. }
  72. -- Arrays referenced to each other --
  73. array(0) {
  74. }
  75. array(0) {
  76. }
  77. -- $arr1 changed --
  78. array(0) {
  79. }
  80. array(0) {
  81. }
  82. Done