2015-11-03 3 views
-3

У меня есть следующий массив в PHP. Идентификатор и общий ключ одинаковы для одних и тех же значений Id.Объединить элементы массива с одинаковыми значениями id в PHP

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => books 
      [value] => 10 
     ) 
    [1] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => cars 
      [value] => 50 
     ) 
    [2] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => cover 
      [value] => 30 
     ) 
    [3] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => books 
      [value] => 5 
     ) 
    [4] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => cover 
      [value] => 35 
     ) 
    [5] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => cars 
      [value] => 40 
     ) 

)

И я хотел бы объединить элемент Line и Value внутри массива. Чтобы проиллюстрировать результат, я ищу следующий массив.

Array 
(
    [0] => Array 
     (
      [id]  => 1 
      [total] => 100 
      [details] => Array 
       (
        [0] => Array 
         (
         [line] => books 
         [value] => 10 
        ) 
        [1] => Array 
         (
         [line] => cars 
         [value] => 50 
        ) 
        [2] => Array 
         (
         [line] => cover 
         [value] => 30 
        ) 
       ) 
     )      

    ) 
    [1] => Array 
     (
      [id]  => 2 
      [total] => 80 
      [details] => Array 
       (
        [0] => Array 
         (
         [line] => books 
         [value] => 5 
        ) 
        [1] => Array 
         (
         [line] => cars 
         [value] => 35 
        ) 
        [2] => Array 
         (
         [line] => cover 
         [value] => 40 
        ) 
       ) 
     )      
    ) 

Я работаю с PHP. Спасибо за твою помощь.

+2

простой цикл Еогеасп будет работать - вы должны в наименее попробовать что-то –

+0

Добро пожаловать в переполнение стека. Пожалуйста, опубликуйте то, что вы пытались до сих пор. – Twisty

ответ

5

достаточно хорошо скучно делать свою работу \ домашнее задание для вас:

$out=array(); 
foreach($array as $x){ 
    $out[$x['id']]['id']=$x['id']; 
    $out[$x['id']]['total']=$x['total']; 
    $out[$x['id']]['details'][]=array('line'=>$x['line'],'value'=>$x['value']); 
} 

ПРИМЕЧАНИЯ:

  • использовать идентификатор как из ключа, было бы добавить наши собственные, но это будет работать штраф ,
  • идентификатор и общая будут переписаны на каждом цикле (на ключ), но это не большая проблема
  • линия \ значение увеличиваются, чтобы там собственные данные массива
+0

lol, вы совершенно правы, Извините, у меня так много всего, что я решил опубликовать свою проблему. PS. Это мой первый пост, я не уверен, как отметить этот вопрос как правильный ответ. – user3216926

+0

@ user3216926 под голосами слева от вопроса должна быть отметка, щелкните по ней зеленым цветом: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+0

Мне нравится другой вид зеленого $$$$$ –

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