我从另一个页面收到一个包含许多元素的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个项目,我的id json将存储从1到150的id)。
我以数字为例更加清楚,它实际上并没有更新10个新项目,它可以是任何随机数。哦,如果有什么帮助,我正在与Codeigniter合作。
感谢您的帮助和时间,我到处都在寻找解决方案,但是我不确定要寻找什么。
您将需要读入目标文件,对其内容进行解码,检查数组是否包含新项,如果没有,则将其追加到数组中。
$ids = json_decode(file_get_contents('ids.json'));
$json_array = json_decode(file_get_contents('path/to/file.json'));
foreach($json_array as $arr){
if (!in_array($arr['id'], $ids)) $ids[] = $arr['id'];
}
file_put_contents('ids.json', json_encode($ids));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句