2015-03-31 3 views
-1

У меня есть два массива, которые я хочу объединить определенным образом. Предположим, у меня есть следующие массивы:Объединить два массива PHP в многомерный массив в Quadruped Jumps

$q_id = array(0 => 7, 1 => 8, 2 => 9) 
$a_id = array(
     0 => 24, 
     1 => 25, 
     2 => 26, 
     3 => 27, 
     4 => 28, 
     5 => 29, 
     6 => 30, 
     7 => 31, 
     8 => 32, 
     9 => 33, 
     10 => 34, 
     11 => 35, 

)

Конечный результат я стремлюсь на это:

array(

     [7] => array 
     (
      [0] => 24 
      [1] => 25 
      [2] => 26 
      [3] => 27 
     ) 
     [8] => array 
     (
      [4] => 28 
      [5] => 29 
      [6] => 30 
      [7] => 31 
     ) 
     [9] => array 
     (
      [8] => 32 
      [9] => 33 
      [10] => 34 
      [11] => 35 
     ) 
) 

Встроенные функции манипуляции массива не отвечают моим потребностям. Рекурсивное слияние коды взяты из поста сделал здесь, на StackOverflow: Combine arrays to form multidimensional array in php, создает массив, в котором каждый из трех клавиш, которые выполняют, как подмассивы получает только первое значение каждой группы четвереньки:

 array(

     [7] => array 
     (
      [0] => 24 
     ) 
     [8] => array 
     (
      [4] => 28 
     ) 
     [9] => array 
     (
      [8] => 32 
     ) 

Я положительное решение лежит в рекурсии (возможно, изменение фрагмента кода, приведенного в ссылке выше), но я просто не знаю, как это сделать.

Помощь была бы очень признательна.

+0

А где код? Вы что-то пробовали? – Rizier123

+0

Код появляется в ссылке, которую я предоставил. Я попытался изменить код, но результат будет только захватывать первое или последнее значение каждой группы из четырех. Я упомянул, что я пытался использовать встроенные функции (array_merge, array_merge_recursive, array_map и т. Д.), Которые не оказались полезными для этого случая. –

+0

@ Daan Я провел весь день в Интернете и здесь, в стеке, чтобы найти решение моей проблемы. Когда все остальное терпит неудачу, спросите других. Никто не просил вас писать для меня какой-либо код, если у вас есть что-то полезное, чтобы сказать, тогда скажите, что иначе нет. –

ответ

0

Это должно работать для вас:

(Здесь я просто array_combine()$q_id массива в качестве ключей с $a_id массивом в качестве значений Где я использую X куски размера count($a_id)/count($q_id) с array_chunk() для значений массивов.)

<?php 

    $q_id = [7, 8, 9]; 
    $a_id = [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,]; 

    $result = array_combine($q_id, array_chunk($a_id, count($a_id)/count($q_id), TRUE)); 
    print_r($result); 

?> 

выход:

Array 
(
    [7] => Array 
     (
      [0] => 24 
      [1] => 25 
      [2] => 26 
      [3] => 27 
     ) 

    [8] => Array 
     (
      [4] => 28 
      [5] => 29 
      [6] => 30 
      [7] => 31 
     ) 

    [9] => Array 
     (
      [8] => 32 
      [9] => 33 
      [10] => 34 
      [11] => 35 
     ) 

) 
+0

Спасибо, что помогли мне в этом. С другой стороны, не могли бы вы рассказать мне, что я делаю неправильно при публикации? Я ссылался на сообщение, сделанное здесь в стеке, а также упомянул, что я пытался использовать встроенные функции. Это случай, когда вы не отправляете попытки кодирования? Еще раз спасибо! –

+0

@NiviM Добро пожаловать. (Я думаю, вы можете улучшить свой вопрос с попыткой или двумя и описать, что вы не понимаете/где вы застряли, или если вы считаете, что используете неправильные функции, просто что-то подобное, чтобы показать свои усилия и работу, которые вы сделали) – Rizier123

Смежные вопросы