Kin
Kin

Reputation: 4596

How to merge multidemntional array by specific element?

I have array with this kind of structure:

array(
    array('name' => 'Some name', 'data' => array()),
    array('name' => 'Some name #2', 'data' => array()),
    array('name' => 'Some name #3', 'data' => array()),
    array('name' => 'Some name #4', 'data' => array()),
    array('name' => 'Some name', 'data' => array()),
)

What is the best way to merge data where names are same? Maybe there is some functions or i need simply loop trough all?

Upvotes: 0

Views: 46

Answers (1)

DevZer0
DevZer0

Reputation: 13535

iterate through it and create a another array based on the element name as key and then append array items against it

for example

$x = array(
    array('name' => 'Some name', 'data' => array()),
    array('name' => 'Some name #2', 'data' => array()),
    array('name' => 'Some name #3', 'data' => array()),
    array('name' => 'Some name #4', 'data' => array()),
    array('name' => 'Some name', 'data' => array()),
);

$newarray = array();
foreach ($x as $item) {
    $newarray[$item['name']][] = $item['data'];
}

Upvotes: 1

Related Questions