我有一些数组:
$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": []
},
...
我想填充每个人员tots
和pds
。为此,我尝试了以下操作(这是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++;
}
这将返回错误说明
非法偏移类型
经过研究,我发现了这一点
当您尝试使用对象或数组作为索引键访问数组索引时,会发生非法偏移类型错误。
我该如何纠正此问题?
答案 0 :(得分:1)
您在这里的价值...
$tmp = ${'officer_'.$i};
正在将$tmp
设置为变量的值,当(我认为)您希望它只是字符串本身...
$tmp = 'officer_'.$i;