Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > соединение многомерных массивов


Автор: spx 12.3.2006, 11:34
всем привет!
никак не могу справитья со следующей задачей:
есть несколько массивов (может быть 2, 3 или 4).
например:
Код

$array1 = array('first'=>1, 'second'=>2, 'third'=3);
$array2 = array('first'=>1, 'second'=>2, 'third'=4);
$array3 = array('first'=>1, 'second'=>2, 'third'=5);


нужно получить массив
Код


$array4 = array('first'=>1, 'second'=2, 'third'=>array('1'=>3, '2'=>4, '3'=>5));


я накатал решение для определенного числа массивов и равного числа значений в них:
Код

<?php
$c = array();
$array1 = array('f'=>3, 's'=>4, 't'=>'222');
$array2 = array('f'=>3, 's'=>4, 't'=>'333');
foreach ($array1 as $arra1 => $value1) {
        if ($array1[$arra1] == $array2[$arra1]) {
           $c[$arra1] = $array1[$arra1];
        }
        else $c[$arra1] = array('1'=>$array1[$arra1], '2'=>$array2[$arra1]);
}
?>

но не знаю как реализовать решение для неограниченного числа массивов и различного числа значений в них... т.е. например, если в один из массивов добавится значение 'third'=>444, а в других его не будет, то оно должно быть и в результирующем массиве.

Автор: Darhazer 14.3.2006, 17:45
Тебе это нужно?

Код

<?php
$array1 = array('first'=>1, 'second'=>2, 'third'=>3);
$array2 = array('first'=>1, 'second'=>2, 'third'=>4);
$array3 = array('first'=>1, 'second'=>2, 'third'=>5);

$array4 = array_merge_recursive($array1, $array2, $array3);

foreach ( $array4 as $key => $arr )
{
    $array4[$key] = array_unique($array4[$key]);
}

foreach ( $array4 as $key => $arr )
{
    if ( count($array4[$key] ) == 1 )
    {
        $array4[$key] = $array4[$key][0];
    }
}

print_r($array4);
        
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)