array_reduce.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --TEST--
  2. Test array_reduce() function
  3. --INI--
  4. precision=14
  5. --FILE--
  6. <?php
  7. $array = array('foo', 'foo', 'bar', 'qux', 'qux', 'quux');
  8. echo "\n*** Testing array_reduce() to integer ***\n";
  9. function reduce_int($w, $v) { return $w + strlen($v); }
  10. $initial = 42;
  11. var_dump(array_reduce($array, 'reduce_int', $initial), $initial);
  12. echo "\n*** Testing array_reduce() to float ***\n";
  13. function reduce_float($w, $v) { return $w + strlen($v) / 10; }
  14. $initial = 4.2;
  15. var_dump(array_reduce($array, 'reduce_float', $initial), $initial);
  16. echo "\n*** Testing array_reduce() to string ***\n";
  17. function reduce_string($w, $v) { return $w . $v; }
  18. $initial = 'quux';
  19. var_dump(array_reduce($array, 'reduce_string', $initial), $initial);
  20. echo "\n*** Testing array_reduce() to array ***\n";
  21. function reduce_array($w, $v) { $w[$v]++; return $w; }
  22. $initial = array('foo' => 42, 'bar' => 17, 'qux' => -2, 'quux' => 0);
  23. var_dump(array_reduce($array, 'reduce_array', $initial), $initial);
  24. echo "\n*** Testing array_reduce() to null ***\n";
  25. function reduce_null($w, $v) { return $w . $v; }
  26. $initial = null;
  27. var_dump(array_reduce($array, 'reduce_null', $initial), $initial);
  28. echo "\nDone";
  29. ?>
  30. --EXPECT--
  31. *** Testing array_reduce() to integer ***
  32. int(61)
  33. int(42)
  34. *** Testing array_reduce() to float ***
  35. float(6.1)
  36. float(4.2)
  37. *** Testing array_reduce() to string ***
  38. string(23) "quuxfoofoobarquxquxquux"
  39. string(4) "quux"
  40. *** Testing array_reduce() to array ***
  41. array(4) {
  42. ["foo"]=>
  43. int(44)
  44. ["bar"]=>
  45. int(18)
  46. ["qux"]=>
  47. int(0)
  48. ["quux"]=>
  49. int(1)
  50. }
  51. array(4) {
  52. ["foo"]=>
  53. int(42)
  54. ["bar"]=>
  55. int(17)
  56. ["qux"]=>
  57. int(-2)
  58. ["quux"]=>
  59. int(0)
  60. }
  61. *** Testing array_reduce() to null ***
  62. string(19) "foofoobarquxquxquux"
  63. NULL
  64. Done