bug24980.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. --TEST--
  2. Bug #24980 (array_reduce() uses first element as default running total)
  3. --FILE--
  4. <?php
  5. /* test #1: numeric data */
  6. function add_up($running_total, $current_value)
  7. {
  8. echo "running_total is ".(int)$running_total.", current_value is {$current_value}\n";
  9. $running_total += $current_value * $current_value;
  10. return $running_total;
  11. }
  12. $numbers = array (2,3,5,7);
  13. $total = array_reduce($numbers, 'add_up');
  14. print "Total is $total\n";
  15. /* test #2: string data */
  16. $a = array("a", "b", "c");
  17. function foo ($a, $b)
  18. {
  19. return $a . $b;
  20. }
  21. var_dump(array_reduce($a, "foo"));
  22. /* test #3: basic test (used to leak memory) */
  23. function rsum($v, $w)
  24. {
  25. $v += $w;
  26. return $v;
  27. }
  28. function rmul($v, $w)
  29. {
  30. $v *= $w;
  31. return $v;
  32. }
  33. $a = array(1, 2, 3, 4, 5);
  34. $x = array();
  35. $b = array_reduce($a, "rsum");
  36. $c = array_reduce($a, "rmul", 10);
  37. $d = array_reduce($x, "rsum", 1);
  38. var_dump($b, $c, $d);
  39. ?>
  40. --EXPECT--
  41. running_total is 0, current_value is 2
  42. running_total is 4, current_value is 3
  43. running_total is 13, current_value is 5
  44. running_total is 38, current_value is 7
  45. Total is 87
  46. string(3) "abc"
  47. int(15)
  48. int(1200)
  49. int(1)