Комбинирование 3 массивов в один массив

У меня есть следующие массивы:

$front = array("front_first","front_second"); $inside = array("inside_first", "inside_second", "inside_third"); $back = array("back_first", "back_second", "back_third","back_fourth"); 

то, что мне нужно сделать, это объединить его, чтобы результат выглядел так, как показано выше. Порядок вывода всегда заключается в том, чтобы привести их в порядок back, front, inside :

 $final = array( "back_first", "front_first", "inside_first", "back_second", "front_second", "inside_second", "back_third", "front_second", "inside_third", "back_fourth", "front_second", "inside_third" ); 

Таким образом, в основном он смотрит на три массива, и в зависимости от того, какой массив имеет меньше значений, он будет повторно использовать последнее значение несколько раз, пока он не будет прокручиваться через оставшиеся ключи в более длинных массивах.

Есть ли способ сделать это? Я в тупике /

 $front = array("front_first","front_second"); $inside = array("inside_first", "inside_second", "inside_third"); $back = array("back_first", "back_second", "back_third","back_fourth"); function foo() { $args = func_get_args(); $max = max(array_map('sizeof', $args)); // credits to hakre ;) $result = array(); for ($i = 0; $i < $max; $i += 1) { foreach ($args as $arg) { $result[] = isset($arg[$i]) ? $arg[$i] : end($arg); } } return $result; } $final = foo($back, $front, $inside); print_r($final); 

demo: http://codepad.viper-7.com/RFmGYW

демонстрация

http://codepad.viper-7.com/xpwGha

PHP

 $front = array("front_first", "front_second"); $inside = array("inside_first", "inside_second", "inside_third"); $back = array("back_first", "back_second", "back_third", "back_fourth"); $combined = array_map("callback", $back, $front, $inside); $lastf = ""; $lasti = ""; $lastb = ""; function callback($arrb, $arrf, $arri) { global $lastf, $lasti, $lastb; $lastf = isset($arrf) ? $arrf : $lastf; $lasti = isset($arri) ? $arri : $lasti; $lastb = isset($arrb) ? $arrb : $lastb; return array($lastb, $lastf, $lasti); } $final = array(); foreach ($combined as $k => $v) { $final = array_merge($final, $v); } print_r($final); 

Вывод

 Array ( [0] => back_first [1] => front_first [2] => inside_first [3] => back_second [4] => front_second [5] => inside_second [6] => back_third [7] => front_second [8] => inside_third [9] => back_fourth [10] => front_second [11] => inside_third )