如果对象 id 相同,如何合并对象


How can merge objects if objects id is same?

我想合并具有相同ID的对象。

我正在使用 php 从 mysql 获取字符串形式的 javascript 对象:

$sql="SELECT plaka,il,SUM(hasta_say) AS Hasta_Say FROM ADSM GROUP BY plaka,il ORDER BY Hasta_Say ";
///COLUMN CHARTS
$result=$baglanti->query($sql);
$ilEventChart="";
while ($query=$result->fetch(PDO::FETCH_ASSOC)) {
$color=random_color();  

$ilEventChart.='
columnChartData.TR'.$query['plaka'].' = [
        {
        "il": "'.$query['il'].'",
        "hasta_sayisi":'.$query['Hasta_Say'].',
        "color": "'.$color.'"
        }];
';
}

所以我正在打印到$ilEventChart php 变量到 javascript 区域。

在此之后 javascript 对象创建如下。但是递归"plaka"会导致具有不同属性的递归对象。

此处对象:

columnChartData.TR78 = [
        {
        "il": "KARABÜK",
        "hasta_sayisi":66148,
        "color": "b2147e"
        }];
columnChartData.TR78 = [
        {
        "il": "ÇANAKKALE",
        "hasta_sayisi":66246,
        "color": "9a720a"
        }];

我想将此对象合并为一个对象。所需的输出如下所示:

columnChartData.TR78 = [
        {
        "il": "KARABÜK",
        "hasta_sayisi":66148,
        "color": "b2147e"
        },
        {
        "il": "ÇANAKKALE",
        "hasta_sayisi":66246,
        "color": "9a720a"
        }];

我们如何用javascript做到这一点?

谢谢

经过长时间的工作,我找到了解决方案。使用 PHP 数组可以实现的解决方案。

这是解决方案:

  1. 我们定义birim多维数组以使用javascriptid(plaka).
  2. 在我们用while循环从MySQL获取数据并推送每个之后数据到birim数组

  3. 所以我们创建了一个多维数组,其ID号有自己的.key。例如,如果我们用 print_r 检查数组:

    回声"

    ";print_r($birim[6]);
    

我们看到数组中6值的 id :

Array
(
    [0] => {
        "birim": "ANKARA GÖLBAÅI AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":70518,
        "color": "e817c0"
        },
    [1] => {
        "birim": "ANKARA SÄ°NCAN AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":77868,
        "color": "ac31aa"
        },
    [2] => {
        "birim": "ANKARA BALGAT AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":97564,
        "color": "609724"
        },
    [3] => {
        "birim": "ANKARA KEÇİÖREN OSMANLI AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":97773,
        "color": "62f1a0"
        },
    [4] => {
        "birim": "ANKARA MAMAK AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":126806,
        "color": "2c7498"
        },
    [5] => {
        "birim": "ANKARA TOPRAKLIK AÄIZ VE DÄ°Å SAÄLIÄI MERKEZÄ°",
        "hasta_sayisi":126854,
        "color": "23a203"
        },
    [6] => {
        "birim": "ANKARA TEPEBAÅI AÄIZ VE DÄ°Å SAÄLIÄI HASTANESÄ°",
        "hasta_sayisi":200623,
        "color": "735aa6"
        },
    [7] => {
        "birim": "ANKARA 75.YIL AÄIZ VE DÄ°Å SAÄLIÄI HASTANESÄ°",
        "hasta_sayisi":260057,
        "color": "4d8cd1"
        },
)
  1. 完成所有这些之后,我们将数组值打印foreach loop到 temp变量,我们将在 JavaScript 代码中使用。

以下是完整代码:

$sql="SELECT plaka,birim,SUM(hasta_say) AS Hasta_Say FROM ADSM GROUP BY birim ORDER BY Hasta_Say "; $result=$baglanti->query($sql); $birimEventChart=""; $birim=array(); while ($query=$result->fetch(PDO::FETCH_ASSOC)) { $color=random_color(); $birim[$query['plaka']][]='{ "birim": "'.$query['birim'].'", "hasta_sayisi":'.$query['Hasta_Say'].', "color": "'.$color.'" },'; } $sql="SELECT DISTINCT plaka FROM ADSM"; $result=$baglanti->query($sql); $temp=""; while ($query=$result->fetch(PDO::FETCH_ASSOC)) { foreach ($birim[$query['plaka']] as $p) { $temp.=$p; } $birimEventChart.='hastaneChartData.TR'.$query['plaka'].' = ['.$temp.'];'; $temp=""; }