首页 > 解决方案 > PHP:如何计算多维数组中的相同值

问题描述

我想在数组中计算相同的 DIAGNOSA 值:

Array
(
[0] => Array
    (
        [NIK_PASIEN] => 6005
        [DIAGNOSA] => ["Hipertensi","ISPA"]
    )

[1] => Array
    (
        [NIK_PASIEN] => 6163
        [DIAGNOSA] => ["ISPA"]
    )
[2] => Array
    (
        [NIK_PASIEN] => 5853
        [DIAGNOSA] => ["Hipertensi","ISPA","Vertigo"]
    )

[3] => Array
    (
        [NIK_PASIEN] => 5613
        [DIAGNOSA] => ["Vertigo"]
    )
)

如何使其转换为如下数组?

Array
(
[0] => Array
    (
        [DIAGNOSA] => ISPA
        [COUNT] => 3
    )

[1] => Array
    (
        [DIAGNOSA] => Hipertensi
        [COUNT] => 2
    )
[2] => Array
    (
        [DIAGNOSA] => Vertigo
        [COUNT] => 2
    )
)

我将在下表中显示它:

诊断 数数
ISPA 3
希佩尔滕西 2
眩晕 2

我该怎么做?

标签: phparraysmultidimensional-array

解决方案


试试这段代码!

$array = [
            ['NIK_PASIEN'=>6005,'DIAGNOSA'=>["Hipertensi","ISPA"]],
            ['NIK_PASIEN'=>6163,'DIAGNOSA'=>["ISPA"]],
            ['NIK_PASIEN'=>5853,'DIAGNOSA'=>["Hipertensi","ISPA","Vertigo"]],
            ['NIK_PASIEN'=>5613,'DIAGNOSA'=>["Vertigo"]],
        ];

$detailed = [];
    foreach ($array as $ar) {
        foreach ($ar['DIAGNOSA'] as $key) {
            $original_key = array_search($key, array_column($detailed, 'DIAGNOSA'), true);
            if ($original_key !== false) {
                $detailed[$original_key]['COUNT'] += 1;
            } else {
                $temp['DIAGNOSA'] = $key;
                $temp['COUNT'] = 1;
                $detailed[] = $temp;
            }
        }
    }

结果将在详细数组中


推荐阅读