PHP: найти те же ключи в многомерном массиве и объединить результаты - PullRequest
1 голос
/ 12 января 2012

У меня есть многомерный массив, который выглядит следующим образом:

$array = (
    [0] => array (
        ['WS'] => array(
             [id] => 2,
             [name] => 'hello'
             )
        )
    ), 
    [1] => array (
        ['SS'] => array(
             [id] => 1,
             [name] => 'hello2'
             )
        )
    ),
    [2] => array (
        ['WS'] => array(
             [id] => 5,
             [name] => 'helloAGAIN'
             )
        )
)

Как видите, $ array [0] и $ array [2] имеют одинаковый ключ [WS].Мне нужна функция, чтобы найти эти "те же ключи".После этого я бы объединил эти два массива в один.fe

$array =
(
    [0] => array 
        (
            ['WS'] => array
                (
                     [0] => array
                         (
                             [id] => 2,
                             [name] => 'hello'
                         ),
                     [1] => array
                         (
                            [id] => 5,
                            [name] => 'helloAGAIN'
                         )
                )
        ),
    [1] => array 
         (
             ['SS'] => array
                 (
                     [0] => array
                         (
                              [id] => 1,
                              [name] => 'hello2'
                         )
                 )
         )
    )

Надеюсь, вы, ребята, понимаете мою проблему.приветствует

Ответы [ 3 ]

8 голосов
/ 12 января 2012
function group_by_key ($array) {
  $result = array();
  foreach ($array as $sub) {
    foreach ($sub as $k => $v) {
      $result[$k][] = $v;
    }
  }
  return $result;
}

Посмотреть, как работает

1 голос
/ 12 января 2012

Вы можете просто исключить первый уровень вашего массива, и в итоге вы получите что-то вроде этого:

$array = (
    ['WS'] => array(
        [0] => array(
                [id] => 2,
                [name] => 'hello'
        ),
        [1] => array(
               [id] => 5,
               [name] => 'helloAGAIN'
        )
    ),
    ['SS'] => array(
        [0] => array(
              [id] => 1,
              [name] => 'hello2'
        )
    )
)

Таким образом, вы можете добавить вещи в свой массив следующим образом:

$array['WS'][] = array();
1 голос
/ 12 января 2012

Вы можете просто перебрать массив и удалить соответствующие элементы

    $multiArray = array('0' => etc etc);
    $matches = array();

    foreach(multiArray as $key => $val)
    {
       $keyValToCheck = key($val);

       if(!in_array($keyValToCheck, $matches))
       {
          $matches[] = $keyValToCheck; // add value to array matches

          // remove item from array because match has been found
          unset($multiArray[$key][$keyValToCheck]);
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...