Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> соединение многомерных массивов 
:(
    Опции темы
spx
Дата 12.3.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.3.2006

Репутация: нет
Всего: нет



всем привет!
никак не могу справитья со следующей задачей:
есть несколько массивов (может быть 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, а в других его не будет, то оно должно быть и в результирующем массиве.
PM MAIL   Вверх
ZlojEzh
Дата 12.3.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 1
Всего: 15



Код

  $arrays = array();

  $arrays[] = array('first'=>2, 'second'=>2);
  $arrays[] = array('first'=>1, 'second'=>6);
  $arrays[] = array('first'=>1, 'second'=>2, 'third'=>5);
  $arrays[] = array('third'=>7);

  print_r($arrays);
  print_r(my_merge($arrays));


  function my_merge($arrays) {
    $result = array();
    foreach ($arrays as $arr) {
      foreach ($arr as $field => $value) {
        if (isset($result[$field])) {
          if (is_array($result[$field])) {
            if (!in_array($value,$result[$field])) {
              $result[$field][] = $value;
            }
          } else {
            if ($result[$field]!=$value) {
              $result[$field] = array($result[$field],$value);
            }
          }
        } else {
          $result[$field] = $value;
        }
      }
    }
    return $result;
  }


Вывод:

Код

Array
(
    [0] => Array
        (
            [first] => 2
            [second] => 2
        )

    [1] => Array
        (
            [first] => 1
            [second] => 6
        )

    [2] => Array
        (
            [first] => 1
            [second] => 2
            [third] => 5
        )

    [3] => Array
        (
            [third] => 7
        )

)
Array
(
    [first] => Array
        (
            [0] => 2
            [1] => 1
        )

    [second] => Array
        (
            [0] => 2
            [1] => 6
        )

    [third] => Array
        (
            [0] => 5
            [1] => 7
        )

)

PM MAIL ICQ   Вверх
spx
Дата 12.3.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.3.2006

Репутация: нет
Всего: нет



спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.