Array helpers #1

Just some random (relevance wise) functions for array manipulations.

/**
 * Combines a new array using initial array even values 
 * as keys and odd as their values
 *
 * @param   array     $initial            
 * @param   callable  $key_callback     Applied on keys
 * @param   callable  $value_callback   Applied on values
 * @return  array
 */      
function arrayCombineFromValues(
    array $initial,
    callable $key_callback = null,
    callable $value_callback = null
) {
    $values = array_values($initial);
    $combined = array();
    for ($i = 0; $i < count($values); $i += 2) {
        $key = $key_callback ? $key_callback($values[$i]) : $values[$i];
        $val = isset($values[$i + 1]) ? $values[$i + 1] : null;
        $val = $value_callback ? $value_callback($val) : $val;
        $combined[$key] = $val;
    }
    return $combined;
}

/**
 * Merges two arrays using a callback to resolve key conflicts
 * 
 * During a key conflict the callback takes the value from the first 
 * array as its first param and the value from the second array as 
 * the second param and should return a truthy value in case the second 
 * param should take the priority over the first one
 *
 * @param   array       $first
 * @param   array       $second
 * @param   callable    $comparator    Expected to take 2 params
 * @return  array
 */
function arrayMergeCompare(
    array $first,
    array $second,
    callable $comparator
) {
    foreach ($second as $key => $val) {
        if (!isset($first[$key]) or $comparator($first[$key], $val)) {
            $first[$key] = $val;
        }
    }
    return $first;
}

Meta

Posted at 22.06.2015 in Snippets

Tagged with: php , array , combine , merge

Discussion

Nothing has been said

Leave a Reply

Authenticate with:        Terms, Privacy & TL;DR
*
*