【发布时间】:2014-09-05 23:30:13
【问题描述】:
我从另一个页面收到一个包含许多元素的 json,其中一个是 id。我想要做的是创建一个只有 id 的新 json,所以这就是我正在做的事情:
首先,json 被解码以作为文件存储在服务器中。它存储在一个数组中。从那里我将所有 id 存储在另一个数组中,这是我正在做的简化版本:
$json_array = json_decode(file_get_contents('path/to/file.json'));
foreach($json_array as $arr){
$ids[] = $arr['id'];
}
file_put_contents('ids.json', json_encode($ids));
到目前为止,它正在做我想做的事,我得到了一个包含所有 id 的 json。问题是,我的 json 文件更新并且只显示最后 50 项。所以每当调用它时,我都会得到最后的 50 个 id。例如,如果我有 50 个项目,那么我的 json 有 id 1 到 id 50,但是如果我有 60 个项目,它会显示从 id 10 到 id 60,所以前 10 个 id 被替换并消失了。
我想保留前 10 个 ID,但仍会使用新 ID 进行更新并避免重复。问题是,在我给出的示例中,项目 10 到 50 是相同的,只有最后 10 个是新的。我不确定这是否可能。说清楚:
我当前的 json: id 从 1 到 50。
更新json:第10-60项(10-50项与之前相同)。
我希望我的 json 保留的内容: id 从 1 到 60,没有重复。 (每次有更新时保持这个,所以如果 json 有 100 - 150 个项目,我的 ids json 将存储 1 到 150 的 ids。
为了更清楚,我以数字为例,它并没有真正更新 10 个新项目,它可以是任何随机数。哦,我正在使用 Codeigniter,如果有帮助的话。
感谢您的帮助和时间,我到处搜索解决方案,但我不确定要寻找什么。
【问题讨论】:
-
您是否尝试在 json_last_error() 中遇到任何错误?如果确实存在错误,也许会对您有所帮助。
-
对不起,我不明白这有什么帮助?该代码正在运行,问题是它正在用新项目替换旧项目。不应该这样做吗?
-
我不确定您的代码是否正常工作 :) 请参阅
foreach($json_array as $arr){ $ids[] = $arr['id'] }$ids[] = $arr['id']之后缺少; -
哦!对不起,这是一个错字,这不是我的实际代码,它只是一个简化版本,以使事情更清楚:)
-
mhh,也许您应该发布整个代码,但是,请尝试在
json_decode和json_encode之后放置一个var_dump(json_last_error());
标签: php json codeigniter