PHP添加到JSON数组-“非法偏移类型”

时间:2019-10-23 19:20:06

标签: php json

我有一些数组:

$officers$dates

每个$officers有两个数组($i是官员编号):

${'raw_tot_data_'.$i}${'raw_pd_data_'.$i}

分别是(如果为$i=0):

$raw_tot_data_0$raw_pd_data_0

现在我目前有一个JSON数组($ourData),其外观类似于:

//$ourData
[
    //$officer_0
    {
        "code": "cg",
        "tots": [],
        "pds": []
    },
    //$officer_1
    {
        "code": "crg",
        "tots": [],
        "pds": []
    },
    //$officer_2
    {
        "code": "jan",
        "tots": [],
        "pds": []
    },
    ...

我想填充每个人员totspds。为此,我尝试了以下操作(这是json_encode($ourData)之前的内容):

$i=0;
foreach($officers as $officer){
    $n=0;
    foreach($dates as $date){

        $tmp = ${'officer_'.$i};

        $ourData[$tmp]['tots'][$n] = (    //error here
            $date.' : '.${'raw_tot_data_'.$i}[$n]
        );
        $ourData[$tmp]['pds'][$n] = (    //error here
            $date.' : '. ${'raw_pd_data_'.$i}[$n]
        );

        $n++;
    }
    $i++;
}

这将返回错误说明

  

非法偏移类型

经过研究,我发现了这一点

  

当您尝试使用对象或数组作为索引键访问数组索引时,会发生非法偏移类型错误。

我该如何纠正此问题?

1 个答案:

答案 0 :(得分:1)

您在这里的价值...

$tmp = ${'officer_'.$i};

正在将$tmp设置为变量的值,当(我认为)您希望它只是字符串本身...

$tmp = 'officer_'.$i;