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

时间:2015-01-03 23:58:29

标签: javascript php

我想合并具有相同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执行此操作?

由于

1 个答案:

答案 0 :(得分:0)

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

以下是解决方案:

  1. 我们定义birim MultiDimensional Array以使用javascript ID(普拉卡)。
  2. 我们使用while循环从MySQL获取数据并推送每个数据 数据到birim数组

  3. 所以我们创建了一个多维数组,其id号为wich key。例如,如果我们用print_r检查数组:

    echo'

    ';
    print_r($birim[6]);

  4. 我们在数组中看到了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代码中使用的变量。
    2. 以下是完整代码:

      $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=""; }