Объединить массив значений в php

У меня проблема с объединением значений на основе идентификатора.

У меня есть такие данные:

Array(
     [0] => Array(
        [id] => 1,
        [id_name] => a
        [id_vales] => 5
     )
     [1] => Array(
        [id] => 1
        [id_name] => a
        [id_vales] => 4
     )
     [2] => Array(
        [id] => 3
        [id_name] => b
        [id_vales] => 4
    )
    [3] => Array(
        [id] => 3
        [id_name] => b
        [id_vales] => 3
    )
)

тогда я хочу объединить [id_values]на основе идентификатора, поэтому я могу получить такие данные в php

Array(
   [0] => Array(
      [id] => 1
      [id_name] => a
      [id_vales] => 5, 4
    )
    [1] => Array(
      [id] => 3
      [id_name] => b
      [id_vales] => 4, 3
    )
)

2 ответа

Вы можете использовать следующий пример для объединения вашего массива

<?php

$mainArray = array(array('id' => 1, 'id_name' => 'a', 'id_vales' => 5), 
      array('id' => 1,'id_name' => 'a','id_vales' => 4),
      array('id' => 3, 'id_name' => 'b','id_vales' => 4),
      array('id' => 3,'id_name' => 'b','id_vales' => 3)
);

$result = array();
$tempArray = array();
foreach($mainArray as $key => $value)
{
    if(isset($tempArray[$value['id']]))
    { 
        $tempArray[$value['id']] .= ", ".$value['id_vales'];
        $result[] = array('id' => $value['id'], 'id_name' => $value['id_name'], 'id_vales' => $tempArray[$value['id']]);
    }
    else
    {
        $tempArray[$value['id']] = "".$value['id_vales'];
    }
}
echo "<pre>";
print_r($result);
?>

Вы можете найти работающий пример здесь https://paiza.io/projects/3sS3GXH7GHqoipH8k-YtBQ

Выход:

Array
(
    [0] => Array
        (
            [id] => 1
            [id_name] => a
            [id_vales] => 5, 4
        )

    [1] => Array
        (
            [id] => 3
            [id_name] => b
            [id_vales] => 4, 3
        )

)

Я создал для вас массив. из этого массива вы можете легко создать свой массив и получить результат.

$data = array();
     foreach($array as $key=>$value){
            $data[$value['id']]['id'] = $value['id'];
            $data[$value['id']]['id_vales'][] = $value['id_vales'];
            $data[$value['id']]['id_name'] = $value['id_name'];

     }
Другие вопросы по тегам