2015-11-10 2 views
0

Учитывая 4 массива:Конкретные манипуляции массив в PHP

$array1 = [ 
    0 => "Bill", 
    1 => "John" 
]; 

$array2 = [ 
    0 => "Gates", 
    1 => "Wayne" 
]; 

$array3 = [ 
    0 => "alive", 
    1 => "dead" 
]; 

$array1 = [ 
    0 => "man", 
    1 => "man" 
]; 

Вопрос: Как я могу манипулировать ими, чтобы иметь такого рода результаты:

$array5 = [ 
    0 => [ 
     0 => Bill, 
     1 => Gates, 
     2 => alive, 
     3 => men 
    ], 
    1 => [ 
     0 => John, 
     1 => Wayne, 
     2 => dead, 
     3 => men 
    ] 
]; 

Спасибо за вашу помощь.

+1

1) что вы пробовали. 2) укажите, какие массивы ввода объединяются для создания выходных массивов. 3) Важен ли порядок имен до их состояния? Являются ли они всегда двумя записями в каждом массиве> И разрешено ли нам полагаться на это? Обновите свой вопрос с помощью текущего кода. –

+0

Вход: 4 единицы, выход, последний. Я попробовал 'array_map'. Все они имеют одинаковое количество записей – scoolnico

+1

, почему бы просто не использовать цикл for? – NendoTaka

ответ

2

Это должно быть сделано. Однако я его не тестировал.

$inputs = array($arr1, $arr2, $arr3, $arr4); 
$output = array(); 

foreach($inputs as $arr){ 
    $output[] = array(); 
    foreach($arr as $k=>$v){ 
    $output[$k][] = $v; 
    } 
} 

Это должно быть довольно гибким. Обработка любого количества входных массивов и создание # выходного массива = длина каждого входного массива.

+0

Спасибо @ dan08, это дает мне результат, который я попытался (мне пришлось изменить это: '$ output [$ k] [] = $ v;' – scoolnico

+0

oh typo с моей стороны – dan08

0
$array1 = [ 
    0 => "Bill", 
    1 => "John" 
]; 

$array2 = [ 
    0 => "Gates", 
    1 => "Wayne" 
]; 

$array3 = [ 
    0 => "alive", 
    1 => "dead" 
]; 

$array4 = [ 
    0 => "man", 
    1 => "man" 
]; 



$array5 = array(); 
for($i = 0; $i < count($array1); $i++) { 
    $array5[$i] = array($array1[$i], $array2[$i], $array3[$i], $array4[$i]); 
} 

var_dump($array5); 

Результат:

array (size=2) 
    0 => 
    array (size=4) 
     0 => string 'Bill' (length=4) 
     1 => string 'Gates' (length=5) 
     2 => string 'alive' (length=5) 
     3 => string 'man' (length=3) 
    1 => 
    array (size=4) 
     0 => string 'John' (length=4) 
     1 => string 'Wayne' (length=5) 
     2 => string 'dead' (length=4) 
     3 => string 'man' (length=3) 
1

Вы могли бы просто использовать array_map:

array_map(null, $array1, $array2, $array3, $array4) 

Такое поведение упоминается в документации PHP для array_map:

Интересным применением эта функция состоит в построении ar лучей, которые можно легко выполнить, используя NULL в качестве имени функции обратного вызова

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