array_map_variation8.phpt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. Test array_map() function : usage variations - array with references
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_map ( callback $callback , array $arr1 [, array $... ] )
  6. * Description: Applies the callback to the elements of the given arrays
  7. * Source code: ext/standard/array.c
  8. */
  9. /*
  10. * Test array_map() by passing array having reference values for $arr1 argument
  11. */
  12. echo "*** Testing array_map() : array with references for 'arr1' argument ***\n";
  13. function callback1($a)
  14. {
  15. return ($a);
  16. }
  17. function callback_cat($a, $b)
  18. {
  19. return ($a . $b);
  20. }
  21. // reference variables
  22. $value1 = 10;
  23. $value2 = "hello";
  24. $value3 = 0;
  25. $value4 = &$value2;
  26. // array containing reference variables
  27. $arr1 = array(
  28. 0 => 0,
  29. 1 => &$value4,
  30. 2 => &$value2,
  31. 3 => "hello",
  32. 4 => &$value3,
  33. $value4 => &$value2
  34. );
  35. echo "-- with one array --\n";
  36. var_dump( array_map('callback1', $arr1) );
  37. echo "-- with two arrays --\n";
  38. var_dump( array_map('callback_cat', $arr1, $arr1) );
  39. echo "Done";
  40. ?>
  41. --EXPECT--
  42. *** Testing array_map() : array with references for 'arr1' argument ***
  43. -- with one array --
  44. array(6) {
  45. [0]=>
  46. int(0)
  47. [1]=>
  48. string(5) "hello"
  49. [2]=>
  50. string(5) "hello"
  51. [3]=>
  52. string(5) "hello"
  53. [4]=>
  54. int(0)
  55. ["hello"]=>
  56. string(5) "hello"
  57. }
  58. -- with two arrays --
  59. array(6) {
  60. [0]=>
  61. string(2) "00"
  62. [1]=>
  63. string(10) "hellohello"
  64. [2]=>
  65. string(10) "hellohello"
  66. [3]=>
  67. string(10) "hellohello"
  68. [4]=>
  69. string(2) "00"
  70. [5]=>
  71. string(10) "hellohello"
  72. }
  73. Done