php从数组中删除元素而不添加键

时间:2014-08-27 09:58:22

标签: php

我想从数组中删除一个元素(从json转换),但是在未设置的情况下,并在json中重新转换,数组将被编入索引。

源数组:

{"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”键。我不想要这个密钥,因为我使用谷歌图表的数据,并且对这个索引密钥是明智的。

PHP代码:

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

如何从数组中删除元素,保留原始的json语法?

3 个答案:

答案 0 :(得分:4)

这样做:

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

否则JSON认为你发送的是关联数组而不是数字数组

答案 1 :(得分:0)

这就是我的工作方式:

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

答案 2 :(得分:0)

也许是这样的:

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