繁体   English   中英

如果对象 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数组以使用 javascript id(plaka)。
  2. 在我们使用 while 循环从 MySQL 获取数据并将每个数据推送到birim数组之后

  3. 所以我们创建了一个带有 id 号的多维数组,它有自己的键。例如,如果我们使用print_r检查数组:

    回声'

      ';\n打印_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数组值打印到我们将在 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=""; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM