2014-08-27 52 views
0

我想从数组中删除一个元素(从JSON转换),但未设置,并重新在JSON中,数组变为索引。php删除阵列没有添加键的元素

源阵列:

{"rows": 
[{"c":[{"v":"Date(1409052482000)"},{"v":22},{"v":22},{"v":22},{"v":null}]}, 
{"c":[{"v":"Date(1409052614000)"},{"v":22},{"v":22},{"v":22},{"v":null}]}, 
{"c":[{"v":"Date(1409052782000)"},{"v":22},{"v":22},{"v":22},{"v":null}]} 
]} 

结果:

{"rows": 
"2":{"c":[{"v":"Date(1409052614000)"},{"v":22},{"v":22},{"v":22},{"v":null}]}, 
"3":{"c":[{"v":"Date(1409052782000)"},{"v":22},{"v":22},{"v":22},{"v":null}]} 
}} 

问题是 “2” 和 “3” 键。我不想要这个键,因为我使用google图表的数据,并且对于这个索引键是明智的。

PHP代码:

$tempdata = json_decode($jsonTempLog, TRUE); 
foreach ($tempdata['rows'] as $key => $row) { 
    if ($logtime < $showtime) { 
     unset($tempdata['rows'][$key]); 
    } 
} 
echo json_encode($tempdata); 

怎样从数组中删除元素,保持原有的JSON语法?

+0

什么是$ logtime和它来自哪里? – TunaMaxx 2014-08-27 10:03:03

回答

0

我这是怎么一起工作:

unset($infos[$i]); 
$infos = array_values($infos); 
+0

谢谢,它的工作原理:$ tempdata ['rows'] = array_values($ tempdata ['rows']); – 2014-08-27 10:19:46

3

只是这样做:

$tempdata["rows"] = array_values($tempdata["rows"]); 
echo json_encode($tempdata); 

否则JSON认为你发送一个关联数组,而一个数字一个

0

也许这样:

foreach($tempdata as $row){ 
    $tempdata[$rows['keyfield']] = $row; 
}