Разбиение и объединение двух массивов Array - PullRequest
1 голос
/ 13 февраля 2012

У меня есть массив с повторяющимися значениями, такими как

{1
2
3
4
5
6
7
8
9
10
11
12}

и другой массив с данными

{itema
itemb
itemc
itemd}

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

{
itema=>1,5,9
itemb=>2,6,10
itemc=>3,7,11
itemd=>4,8,12
}

Я хочу сгруппировать элементы массива.В основном они получены с использованием значений xpath и 4, которые объединяются, чтобы стать информацией об одном субъекте.Моя основная цель - изменить первый массив так, чтобы я мог печатать значения одного домена вместе ... Я хочу напечатать

1,2,3,4, 5,6,7,8 9, 10,11, 12

Вопрос может показаться странным, но я пытаюсь описать его полностью ... Извините за это

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Предполагая, что первый массив, о котором вы говорите, является многомерным массивом, как в

$firstArray = { a={1,2,3},b={1,2,3} };

Что вам нужно сделать, так это перебрать каждый массив и создать новый в процессе.

$masterArray = {itema,itemb,itemc,itemd};


$newArray = new Array();
for ($i = 0; $i<$masterArray.length; $i++) {
   for ($j = 0; $j<$firstArray.length; $j++){
      $newArray[$i] = $masterArray[$i]=>$firstArray[$j][$i];
   }
}

var_dump($newArray);

Я сам не тестировал код, поэтому не могу сказать, что он идеален, но это в основном то, что вы хотите сделать. Не стесняйтесь задавать вопросы.

Редактировать: В результате обсуждения я обнаружил, что использование функции массива чанка делает то, что хочет ОП, но не то, что задал вопрос.

0 голосов
/ 13 февраля 2012

Примерно так:

$a = array(1,2,3,4,5,6,7,8,9,10,11,12);
$b = array('a', 'b', 'c', 'd');
$aLength = count($a);
$bLength = count($b);
$c = array();
for ($i = 0; $i < $bLength; ++$i) {
    $c[$b[$i]] = array();
    $j = $i;
    while ($j < $aLength) {
        $c[$b[$i]][] = $a[$j];
        $j += $bLength;
    }
}
var_dump($c);
...