-
array_fill_keys
Posted on November 11th, 2010 1 commentThe array_fill_keys() function in PHP allows you to populate the values of an array while specifying its keys.
PHP
$keys = array('write', 'debug', 'execute'); $result = array_fill_keys($keys, 'code'); var_export($result); // => array('write' => 'code', 'debug' => 'code', 'execute' => 'code')
To replicate this functionality in Ruby, we need to use a Hash object, since arrays in Ruby don’t use associative key/value pairs.
Ruby
keys = ['write', 'debug', 'execute'] result = keys.inject({}) do |hash, key| hash[key] = 'code' hash end p result # => {"write"=>"code", "debug"=>"code", "execute"=>"code"}
-
array_merge
Posted on October 19th, 2010 1 commentThe array_merge() function in PHP merges 2 arrays by appending the second array onto the first array, and returning the resulting array.
The way to do this in Ruby depends on the type of data - if dealing with associative arrays (known as a hash in Ruby), we can use the merge() method of the Ruby Hash class.
PHP
$user_details = array('name' => 'John', 'age' => 20); $account_details = array('credits' => '50', 'id' => 4); $user = array_merge($user_details, $account_details); print_r($user); /* Array ( [name] => John [age] => 20 [credits] => 50 [id] => 4 ) */
Ruby
user_details = { :name => 'John', :age => 20 } account_details = { :credits => 50, :id => 4 } p user_details.merge(account_details); # => {:credits=>50, :name=>"John", :id=>4, :age=>20}
Merging numeric arrays in Ruby is much easier as shown below (PHP example given first).
PHP
$start = array(1, 2, 3); $finish = array(4, 5, 6); $nums = array_merge($start, $finish); print_r($nums); /* Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) */
Ruby
start = [1, 2, 3]; finish = [4, 5, 6]; nums = start + finish; p nums; # => [1, 2, 3, 4, 5, 6]
-
array_fill
Posted on October 13th, 2010 1 commentThe array_fill() function in PHP allows an array to be populated (i.e. filled) with a particular value.
PHP
$a = array_fill(3, 5, 'php'); print_r($a); /* Array ( [3] => php [4] => php [5] => php [6] => php [7] => php ) */
In Ruby this is not really possible because Ruby arrays must have their keys filled in the correct order, i.e. you cant skip assigning values to keys in a Ruby array. As such, the next best thing is to fill those values with nil, or use a hash instead.
Ruby
a = [nil] * 3 + ['php'] * 5; puts a; # => [nil, nil, nil, 'php', 'php', 'php', 'php', 'php']
-
array_flip
Posted on April 19th, 2010 3 commentsThe array_flip() PHP function changes all the keys in an array into values, and all the values into keys.
PHP
$a = array('apple' => 1, 'ibm' => 2, 'sun' => 3); $flipped = array_flip($a); print_r($flipped); /* Array ( [1] => apple [2] => ibm [3] => sun ) */
To replicate this functionality in Ruby, we will use a Hash object, since arrays in Ruby don’t use associative key / value pairs.
Ruby
hash = { "apple" => 1, "ibm" => 2, "sun" => 3 }; flipped = hash.invert; p flipped; # => {1 => "apple", 2 => "ibm", 3 => "sun"}
In PHP, the array_flip() function will over write any conflicting keys. The Ruby invert() method behaves the same - any keys which are the same as other keys will overwrite the previous one.
-
array_keys
Posted on February 24th, 2010 No commentsThe array_keys() function in PHP takes an array as it’s argument and returns all the keys in that array (as a numeric array).
PHP
$array = array('go' => 'green', 'stop' => 'red'); var_dump( array_keys($array) ); /* Array ( [0] => go [1] => stop ) */
To replicate this functionality in Ruby, we need to use a Hash object, since arrays in Ruby don’t use associative key/value pairs.
Ruby
array = { :go => 'green', :stop => 'red' }; puts array.keys; # => [:go, :stop]
-
array_product
Posted on February 17th, 2010 No commentsThe array_product() PHP function returns the product of all values in an array. In other words, it multiplies all values in the array together, and returns the result as a number.
PHP
$a = array('1', '2', '3'); $product_total = array_product($a); echo $product_total; // => 6
Ruby
a = [ "1", "2", "3" ]; product_total = a.inject {|product, element| product * element } puts product_total; # => 6
-
array_rand
Posted on February 16th, 2010 1 commentThe array_rand() function in PHP randomly selects one or more elements from an array.
PHP
$users = array('john', 'jane', 'tim', 'alex'); $lucky_winner = array_rand($users); echo $lucky_winner; // alex
Ruby
users = [ 'john', 'jane', 'tim', 'alex' ]; lucky_winner = users[rand(users.length)]; puts lucky_winner; # => alex
-
array_reverse
Posted on October 25th, 2009 No commentsThe array_reverse() function in PHP reverses the order of the elements in an array.
PHP
$a = array('php', 'ruby', 'java'); $results = array_reverse($a); print_r($results); /* Array ( [0] => 'java' [1] => 'ruby' [2] => 'php' ) */
To replicate this functionality in Ruby, we can use the reverse method of the Array object.
Ruby
a = [ "php", "ruby", "java" ]; p a.reverse; # => ["java", "ruby", "php"]
-
array_count_values
Posted on October 21st, 2009 No commentsThe array_count_values() function in PHP counts the number of instances of each value in an array. array_count_values() returns an associative array using the values of the input array as keys and their frequency in the input as values.
PHP
$a = array('a', 'b','a', 'c', 'c'); $results = array_count_values($a); print_r($results); /* Array ( [a] => 2 [b] => 1 [c] => 2 ) */
To replicate this functionality in Ruby, we need to use a Hash object, since arrays in Ruby don’t use associative key/value pairs.
Ruby
a = [ "a", "b", "a", "c", "c" ]; result = list.inject({}) do |hash, key| hash.include?(key) ? hash[key] += 1 : hash[key] = 1; hash end p result; # => ["a" => 2, "b" => 1, "c" => 2]
-
array_chunk
Posted on October 17th, 2009 2 commentsThe array_chunk() function in PHP splits an array into multiple smaller arrays (array chunks).
PHP
$langs = array('php', 'ruby', 'java', 'perl', 'csharp'); $my_size = 2; var_dump( array_chunk($langs, $my_size) ); /* Array ( [0] => Array ( [0] => php [1] => ruby ) [1] => Array ( [0] => java [1] => perl ) [2] => Array ( [0] => csharp ) ) ) */
Ruby
def array_chunk(full_array, size) number_of_chunks = (full_array.length/size.to_f).ceil; chunks = (1..number_of_chunks).collect { [] } while full_array.any? chunks.each do |a_chunk| a_chunk << full_array.shift if full_array.any? end end chunks end langs = ["php", "ruby", "java", "perl", "csharp"] my_size = 2 p array_chunk(langs, my_size) # => [["php", "perl"], ["ruby", "csharp"], ["java"]]


