我有一个邮政编码到用户的一对一密钥结构,位于。html中,看起来像…
...
'80135': 'user1',
'80136': 'user1',
'80137': '',
'80138': '',
'80202': 'user2',
'80203': 'user2',
'80204': '',
'80205': '',
'80206': '',
'80207': '',
...
我想为user3取一个批量列表邮政编码,并填写或覆盖旧用户。例如,如果我输入user3的邮政编码(80202,80203,80204)那么我之前的代码块就会变成。
...
'80135': 'user1',
'80136': 'user1',
'80137': '',
'80138': '',
'80202': 'user3',
'80203': 'user3',
'80204': 'user3',
'80205': '',
'80206': '',
'80207': '',
...
文本编辑器的原因是完成我的集合现在,但理想情况下,它将是很好的有一个客户端应用程序,我们的非程序员团队可以更新和更改,因为他们喜欢,所以这个脚本将是很好的未来计划。我通过…将内容传递到我的网站
var list_load = {<?php include_once('list.html'); ?>};
因为我相信有些人可能对存储这些信息有另一种想法,这个列表很长,有35,000行代码,所以任何关于完全改变我的代码的想法都可以考虑迁移数据的过程。
根据您提供的信息,我假设您的示例代码是JSON对象的子集。我还将假设在您的对象中,邮政编码与用户之间只有一对一的关系,前提是您没有明确说明其他情况,并且假定现有的对象结构不允许一对多关系。考虑到所有这些假设,当前问题的解决方案是将JSON加载到PHP中,在那里进行更改,然后用更新后的JSON对象覆盖整个文件。
$json = file_get_contents('list.html');
$array = json_decode($json, true);
$oldUser = 'user2';
$newUser = 'user3';
$listZipCodes = array("80204"); // list of zip codes to update
// Update the JSON based on user ...
foreach ($array as $zipCode => $user) {
if ($user === $oldUser) {
$array[$zipCode] = $newUser;
}
}
// Update the JSON based on zip code ...
foreach (array_keys($array) as $zipCode) {
if (in_array($zipCode, $listZipCodes)) {
$array[$zipCode] = $newUser;
}
}
$json = json_encode($array);
file_put_contents('list.html', $json);
再一次,这都是假设list.html看起来像这样…
{
"80135": "user1",
"80136": "user1",
"80137": "",
"80138": "",
"80202": "user2",
"80203": "user2",
"80204": "",
"80205": "",
"80206": "",
"80207": ""
}
记住它必须是有效的一个有效的JSON对象符号在你的list.html
为了PHP能够正确解析它。你现有的例子不会在PHP中工作,因为你使用单引号而不是双引号,这是JSON规范的要求。所以你必须确保这部分在你的list.html文件中有效。
除此之外,我强烈建议你采取这种方法,因为它会导致一些不容易解决的严重问题。例如,使用这种方法无法确保数据不会被破坏,因为任何两个PHP脚本都可能试图同时覆盖文件(没有数据完整性)。此外,如果列表变得足够大,那么在不花费大量不必要的CPU和内存问题的情况下,您无法轻松地实现这种规模。此外,您无法控制谁可以直接编辑文件,因此无法控制流向试图使用该数据的底层应用程序代码的数据流。
一个更好的解决方案是使用数据库,这样你既可以控制数据和它的用户权限,而且你可以为非程序员提供一个前端,通过你的前端,通过PHP编辑/修改/读取数据。