^Status|Draft| ^Todo|Fill ending methods - verify unshift_assoc example - review to_object method | ====== Array Helper ====== The Array helper assists in transforming arrays. Warning, in order to use it, class name is 'arr' instead of 'array'. ===== Methods ===== ==== rotate() ==== 'rotate' rotates an array (two-dimensional) matrix clockwise. Example, turns a 2x3 array into a 3x2 array. The two arguments are: * [array] The array you want to rotate * [boolean] Do you want to keep the same keys in the rotated array? -- TRUE by default **Example:** // Please note that the print() statements are for display only $optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); print Kohana::debug($optical_discs); $optical_discs = arr::rotate($optical_discs, FALSE); print ('

'); print Kohana::debug($optical_discs);
It will result in HTML as: Array ( [CD] => Array ( [0] => 700 [1] => 780 ) [DVD] => Array ( [0] => 4700 [1] => 650 ) [BD] => Array ( [0] => 25000 [1] => 405 ) ) Array ( [0] => Array ( [CD] => 700 [DVD] => 4700 [BD] => 25000 ) [1] => Array ( [CD] => 780 [DVD] => 650 [BD] => 405 ) ) ==== remove() ==== 'remove' removes a key from an array and returns it. The two arguments are: * [string] The key you want removed from an array * [array] The array you want the key to be removed from **Example:** // Please note that the print() statements are for display only $optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); print Kohana::debug($optical_discs); $cd = arr::remove('CD', $optical_discs); print ('
'); print Kohana::debug($cd); print ('
'); print Kohana::debug($optical_discs);
It will result in HTML as: Array ( [CD] => Array ( [0] => 700 [1] => 780 ) [DVD] => Array ( [0] => 4700 [1] => 650 ) [BD] => Array ( [0] => 25000 [1] => 405 ) ) Array ( [0] => 700 [1] => 780 ) Array ( [DVD] => Array ( [0] => 4700 [1] => 650 ) [BD] => Array ( [0] => 25000 [1] => 405 ) ) ==== extract() ==== 'extract' extract ones or more keys from an array. Keys that do not exist in the search array will be NULL in the extracted data. The two arguments are: * [array] The array you want the key to be extracted from * [string] The key you want extracted from an array **Example:** $optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); $optical_discs = arr::extract($optical_discs, 'DVD', 'Bluray'); echo Kohana::debug($optical_discs); **Output:** (array) Array ( [DVD] => Array ( [0] => 4700 [1] => 650 ) [Bluray] => //NULL ) ==== binary_search() ==== 'binary_search' performs a basic binary search on an array. By default, it returns the key of the array value it finds. The four arguments are: * [mixed] The value you want to find. * [array] The sorted array you want to search in * [boolean] Return the nearest value, or simply return FALSE (the default) * [boolean] Sort the array before searching **Example:** $my_array = array('10', '20', '30', '50', '80'); echo arr::binary_search('50', $my_array); // 3 echo arr::binary_search('45', $my_array); // FALSE (not found) echo arr::binary_search('45', $my_array, TRUE); // 3 echo arr::binary_search('35', $my_array, TRUE); // 2 ==== range() ==== 'range' fills an array with a range of numbers. The two arguments are: * [integer] Stepping * [integer] Ending Number **Example:** echo Kohana::debug(arr::range(17, 150)); **Output:** (array) Array ( [17] => 17 [34] => 34 [51] => 51 [68] => 68 [85] => 85 [102] => 102 [119] => 119 [136] => 136 ) ==== merge() ==== Emulates array_merge_recursive, but appends numeric keys and replaces associative keys, instead of appending all keys. It takes: * **[array]** any number of arrays * returns **[array]** the merged array ** Example: ** echo Kohana::debug(arr::merge(array('a', 'b'), array('c', 'd'), array('e' => array('f', 'g')))); It will result as: (array) Array ( [0] => a [1] => b [2] => c [3] => d [e] => Array ( [0] => f [1] => g ) ) ==== overwrite() ==== 'overwrite' overwrites an array with values from input array(s). Note that non-existing keys will not be appended. It takes: * [array] key array * [array] input array(s) that will overwrite key array values **Example:** $array1 = array('fruit1' => 'apple', 'fruit2' => 'mango', 'fruit3' => 'pineapple'); $array2 = array('fruit1' => 'strawberry', 'fruit4' => 'coconut'); print Kohana::debug(arr::overwrite($array1, $array2)); **Output:** (array) Array ( [fruit1] => strawberry [fruit2] => mango [fruit3] => pineapple ) ==== map_recursive() ==== ''map_recursive($callback, array $array)'' has been created because PHP does not have this function, and array_walk_recursive creates references in arrays and is not truly recursive. It takes: * **[array]** ''$callback'' a valid callback to apply to each member of the array * **[array]** ''$array'' array to map to * returns **[array]** the mapped array ** Example : ** public function add($value){ return $value + 1; } echo Kohana::debug(arr::map_recursive(array($this, 'add'), array('a' => 1, 'b' => 2, 'c' => array(3, 4), 'd' => array('e' => 5)))); It will result as: (array) Array ( [a] => 2 [b] => 3 [c] => Array ( [0] => 4 [1] => 5 ) [d] => Array ( [e] => 6 ) ) ==== unshift_assoc() ==== ''unshift_assoc'' has been created because PHP does not have this function. It just unshift an association in an associative array. It takes: * [array] array to unshift * [string] key to unshift * [mixed] value to unshift **Example** $fruits = array('fruit1' => 'apple', 'fruit2' => 'mango', 'fruit3' => 'pineapple'); arr::unshift_assoc($fruits, 'fruit1', 'strawberry'); print Kohana::debug($fruits); **Output** (array) Array ( [fruit1] => strawberry [fruit2] => mango [fruit3] => pineapple ) ==== to_object() ==== ''to_object(array $array, $class = 'stdClass') '' converts an array to an object. This method supports multi level arrays. It takes: * **[array]** //$array// array to convert * **[string]** //$class// the base class (default 'stdClass') **Note**: For 1-level arrays, use Typecasting ''$object = (object) $array;'' **Example** $array = arr::to_object(array('test' => 13)); print $array ->test; print Kohana::debug($array); **Output** 13 (object) stdClass Object ( [test] => 13 )