I was looking for a function that could combine an array to multiple one, for my MySQL GROUP_CONCAT() query, so I made this function.
<?php
    function array_combine_array(array $keys)
    {
        $arrays = func_get_args();
        $keys = array_shift($arrays);
        
        $check = count(array_unique(array_map('is_array',array_map('current',$arrays)))) === 1;
        if (!$check) { trigger_error('Function array_combine_array() expects all parameters to be same type array or array of array',E_USER_NOTICE); return array(); }
        
        $assocArray = is_array(array_shift(array_map('current',$arrays)));
        
        if (empty($keys)) $keys = array_keys(array_fill(0,max(($assocArray) ? array_map('count',array_map('current',$arrays)) : array_map('count',$arrays)),'foo'));
        $ret=array();$i=0;
        foreach($keys as $v)
        {
            foreach ($arrays as $k)
            {
                if ($assocArray)
                {
                    $key = key($k);
                    $ret[$v][$key] = isset($k[$key][$i]) ? $k[$key][$i]:false;
                }
                else
                    $ret[$v][] = isset($k[$i]) ? $k[$i]: false;
            }
            $i++;
        }
        return $ret;
    }
    $r = array(1,2,4,10);
    $a1 = array('one','two','four','ten');
    $a2 = array('un','deux','quatre','dix');
    $a3 = array('uno','dos','quatro','diez');
     
     print_r(array_combine_array($r,array('english' => $a1),array('french' => $a2),array('spanish' => $a3))); print_r(array_combine_array($r,$a1,array('french' => $a2),array('spanish' => $a3))); print_r(array_combine_array($r,$a1,$a2,$a3)); print_r(array_combine_array(array(),array('english' => $a1),array('french' => $a2),array('spanish' => $a3))); ?>