Сопряжение элементов многомерного массива - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть два массива в PHP следующим образом:

 Array1 ( [1] => Array ( [0] => 16 ) 
          [2] => Array ( [0] => 17 [1] => 29 ) 
          [3] => Array ( [0] => 30 [1] => 31 ) 
        ) Total Element Count: 5

 Array2 ( [1] => Array ( [0] => 21 )
          [2] => Array ( [0] => 22 ) 
          [3] => Array ( [0] => 23 ) 
          [4] => Array ( [0] => 24 [1] => 25 )
          [5] => Array ( [0] => 43 [1] => 44 )  
        ) Total Element Count: 7

Я хочу создать пару над двумя массивами в зависимости от количества первых массивов, это означает, что первые пять элементов Array2 должны быть смешаны с Array1, а внешние 1D-ключи остаются без изменений.

Вывод должен быть следующим:

 Output Array( [1] => Array ( [0] => 16 [1] => 21) 
               [2] => Array ( [0] => 17 [1] => 29 [2] => 22) 
               [3] => Array ( [0] => 30 [1] => 31 [2] => 23 )
               [4] => Array ( [0] => 24 [1] => 25 ) 

)

Ответы [ 2 ]

3 голосов
/ 22 декабря 2009

Если вы хотите избежать E_STRICT предупреждений:

function combine(array $arr1, array $arr2) {
  $ret = array();
  foreach ($arr1 as $k => $v) {
    if (!array_key_exists($k, $ret)) {
      $ret[$k] = array();
    }
    $ret[$k][] = $v;
  }
  foreach ($arr2 as $k => $v) {
    if (!array_key_exists($k, $ret)) {
      $ret[$k] = array();
    }
    $ret[$k][] = $v;
  }
  return $ret;
}

Если вы предпочитаете более короткую версию:

function combine(array $arr1, array $arr2) {
  $ret = array();
  foreach ($arr1 as $k => $v) {
    $ret[$k][] = $v;
  }
  foreach ($arr2 as $k => $v) {
    $ret[$k][] = $v;
  }
  return $ret;
}
0 голосов
/ 22 декабря 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...