-
array_sum
Posted on April 5th, 2009 2 commentsReturns the sum of values in an array.
PHP
$a = array(2, 4, 6, 8); echo array_sum($a); // => 20
Ruby
a_var = [2, 4, 6, 8]; puts a_var.inject {|sum,x| sum ? sum + x : x }; # => 20
In the code above, the return value from the ruby code will be nil if the array used is empty. This is not exactly the same behaviour as PHP, since the array_sum() function will always return a number. We can force ruby to always return a float (or an int) too, even if the array is empty, by adding a bit of type casting to the final result:
Ruby
a_var = []; puts a_var.inject {|sum,x| sum ? sum + x : x }.to_f; # => 0.0
2 responses to “array_sum”
-
in RoR you can just use Enumerable#sum such as:
puts [2, 4, 6, 8].sum;
-
If you’re not using Ruby on Rails, you can easily just make your own .sum
[code]
class Array;
def sum;
inject( nil ) { |sum,x| sum ? sum+x : x };
end;
end
[/code]The result will be the following:
[code]
[1,2,3].sum # => 6
['1','2','3'].sum # => 123
['a','b','c'].sum # => ‘abc’
[['a'], ['b','c']].sum # => ['a', 'b', 'c']
[/code]If you’re not sure about the type of the array and only are using it with ints, you might want to replace sum+x with sum.to_i+x.to_i
Leave a reply
-


