我得到了一个多维数组作为json_decode的结果:
$start=new DateTime();
$jzon='[{"latitude":41.9089983,"longitude":12.4778983,"mVersionCode":1, "data":""},
{"latitude":41.9091,"longitude":12.4781983,"mVersionCode":1, "data":""},
{"latitude":41.9087983,"longitude":12.4786,"mVersionCode":1, "data":""},
{"latitude":41.9082,"longitude":12.4793,"mVersionCode":1, "data":""},
{"latitude":41.9065,"longitude":12.4811983,"mVersionCode":1, "data":""},
{"latitude":41.9061983,"longitude":12.4819983,"mVersionCode":1, "data":""},
{"latitude":41.9063983,"longitude":12.4827983,"mVersionCode":1, "data":""},
{"latitude":41.9089983,"longitude":12.4840983,"mVersionCode":1, "data":""}]';
$arrayJson=json_decode($jzon, TRUE);
然后我尝试不同的方式来遍历数组,我找到的更有用的是这个:
if (json_last_error() === JSON_ERROR_NONE) {
// JSON is valid
foreach($arrayJson as $cell) {
foreach($cell as $key=>$value) {
if($key=='data') {
$value=$start->format('Y-m-d\ H:i:s');
$start=$start->modify('+1 seconds');
}
}
}
} else {
echo " not valid Json";
}
我尝试过一些不同的方法来分配字段"数据" start的值,但如果var_dump
对象$arrayJson
,则没有设置值!
$cell[$value]=$start;
不起作用!
$value= $something;
无效!
答案 0 :(得分:2)
正如评论中已经提到的那样,通过引用使用。也没有必要使用内部循环,您可以直接访问“数据”成员:
foreach($arrayJson as &$cell)
{
$cell['data'] = $start->format('Y-m-d\ H:i:s');
$start=$start->modify('+1 seconds');
}
答案 1 :(得分:1)
前往罗马的一种方式:(使用参考资料)
if (json_last_error() === JSON_ERROR_NONE) {
// JSON is valid
foreach($arrayJson as &$cell)//<--- reference here
{
$cell['data'] = $start->format('Y-m-d\ H:i:s');
$start = $start->modify('+1 seconds');
}
} else {
echo " not valid Json";
}