У меня есть массив, который содержит набор информации из базы данных, но часть из них является дубликатом с измененным только одним значением в самой глубокой части массива. Например:
[0] => Array( ['id'] => 1 , ['name'] => "First Array" , ['more'] => "stuff" )
[1] => Array( ['id'] => 2 , ['name'] => "Second Array" , ['more'] => "stuff1" )
[2] => Array( ['id'] => 2 , ['name'] => "Second Array" , ['more'] => "stuff2" )
[3] => Array( ['id'] => 3 , ['name'] => "Third Array" , ['more'] => "stuff3" )
[4] => Array( ['id'] => 3 , ['name'] => "Third Array" , ['more'] => "stuff4" )
Я пытаюсь получить любые массивы с тем же полем ['id'] в массив с массивом вместо ['more']. Например:
[0] => Array( ['id'] => 1 , ['name'] => "First Array" , ['more'] => "stuff" )
[1] => Array( ['id'] => 2 , ['name'] => "Second Array" , ['more'] => Array( [0] => "stuff1" , [1] => "stuff2" ) )
[2] => Array( ['id'] => 2 , ['name'] => "Third Array" , ['more'] => Array( [0] => "stuff3" , [1] => "stuff4" ) )
Я попытался сделать это несколькими способами, но ближе всего я могу получить функцию, которая поместит все значения ['more'] в 1 массив следующим образом:
[0] => Array( ['id'] => 1 , ['name'] => "First Array" , ['more'] => "stuff" )
[1] => Array( ['id'] => 2 , ['name'] => "Second Array" , ['more'] => Array( [0] => "stuff1" , [1] => "stuff2" , [2] => "stuff3" , [3] => "stuff4" ) )
И это из этой функции:
<?php
private function compress_duplicates( $a = array() ) {
$diff_key = array_diff_key( $a , array_unique( $a ) );
$first_key = array_shift(array_keys($diffkey));
$array["id"] = $diff_key[$first_key]["id"];
$array["name"] = $diff_key[$first_key]["name"];
foreach($diff_key as $term) {
$array["more"][] = $term["more"];
}
return $array;
}
?>
По сути, я спрашиваю: как найти дубликаты в многомерном массиве, а затем поместить каждый из этих дубликатов в свой собственный массив?