我有一些需要合并的多维数组,同时保留了它的一些值。
Array
(
[diagnosa_id] => 6
[jeniskelamin] => LAKI-LAKI
[diagnosa] => Array
(
[0] => Array
(
[diagnosa_kode] => A01.0
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Demam tifoid
[jmlpasien] => 1
)
[4] => Array
(
[diagnosa_kode] => A01.0
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Demam tifoid
[jmlpasien] => 1
)
)
)
Array
(
[diagnosa_id] => 1
[jeniskelamin] => LAKI-LAKI
[diagnosa] => Array
(
[1] => Array
(
[diagnosa_kode] => A00
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Kolera
[jmlpasien] => 1
)
[2] => Array
(
[diagnosa_kode] => A00
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Kolera
[jmlpasien] => 1
)
)
)
Array
(
[diagnosa_id] => 7
[jeniskelamin] => LAKI-LAKI
[diagnosa] => Array
(
[3] => Array
(
[diagnosa_kode] => A01.1
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Demam paratifoid A
[jmlpasien] => 1
)
)
)
如您所见,前两个数组在[diagnosa]
数组上有类似的数据。我需要在[diagnosa]
数组中组合数组。
因此,如果其中的数组具有相同的值[diagnosa_kode], [jeniskelamin], [pasienhidupmati],
和[diagnosa_nama]
,那么它应该添加[jmlpasien]
值,同时保留其他值。
例如,在第一个数组上,结果应如下所示:
Array
(
[diagnosa_id] => 6
[jeniskelamin] => LAKI-LAKI
[diagnosa] => Array
(
[0] => Array
(
[diagnosa_kode] => A01.0
[jeniskelamin] => LAKI-LAKI
[pasienhidupmati] => HIDUP
[diagnosa_nama] => Demam tifoid
[jmlpasien] => 2
)
)
)
很抱歉,如果它太复杂了,但我无法弄清楚在php上实现它。
答案 0 :(得分:2)
是的,你可以做到,你只需要一个临时的分组持有人,然后合并后你可以再把它们放回去。例如:
foreach ($array as &$value) {
$diagnosa = $value['diagnosa'];
$temp = array(); // initialize the temp holder
foreach($diagnosa as $d) {
$name = "$d[diagnosa_kode] - $d[jeniskelamin] - $d[pasienhidupmati]"; // create a grouping index
if(!isset($temp[$name])) {
$temp[$name] = $d; // simple group initialization
} else {
$temp[$name]['jmlpasien'] += $d['jmlpasien']; // if its there already, just added them up
}
}
$diagnosa = array_values($temp); // simple reindexing
$value['diagnosa'] = $diagnosa; // overwrite the values
}
答案 1 :(得分:0)
如果合并两个数组,请尝试:
$final_array =array();
foreach ($data as $val)
{
foreach($val as $val2)
{
$final_array[] = $val2;
}
}