如何选择要删除的密钥?PHP和JSON

如何选择要删除的密钥?PHP和JSON,php,json,Php,Json,我正在尝试选择一个动态方法来从json文件中删除密钥,目前,此代码覆盖所有json文件并写入{0:{name:null,url:null}}您知道如何解决它吗?我只想在按下删除按钮时删除一个键 PHP: 您正在将数据读入$data_数组并写出$data,因此您所写的是您要删除的数据—在您处理它以删除所有记录之后 这段代码所做的是从设置的$url值中获取$url值,并遍历从输入文件读取的$data_数组,如果找到匹配项,则将其删除。然后将$data\u数组写回文件 $data_url = 'js/

我正在尝试选择一个动态方法来从json文件中删除密钥,目前,此代码覆盖所有json文件并写入{0:{name:null,url:null}}您知道如何解决它吗?我只想在按下删除按钮时删除一个键

PHP:


您正在将数据读入$data_数组并写出$data,因此您所写的是您要删除的数据—在您处理它以删除所有记录之后

这段代码所做的是从设置的$url值中获取$url值,并遍历从输入文件读取的$data_数组,如果找到匹配项,则将其删除。然后将$data\u数组写回文件

$data_url = 'js/json.json';
$data_json = file_get_contents($data_url);
$data_array = json_decode($data_json, true);

// Next line just for testing
//$url = "asdf";    //  $_POST['URL']; ?
foreach($data_array as $key=>$val){
    // check URL
    if ($url == $val["url"]){
        // this deletes record from array
        unset($data_array[$key]);
    }
}
$data_array = array_values($data_array);
file_put_contents($data_url, json_encode($data_array));

$val[status]从何而来?它不在显示的json中……您的$data数组甚至不包含“status”键。您似乎也没有对$data\u数组执行任何操作。。。为我们提供更多信息更正后的代码按预期工作:哦,好吧,这解决了关于null的问题,但现在,它删除了一小时前您自己问题的所有副本,-您确实需要停止多次询问同一主题,在过去的24小时内,你现在有四个问题需要解决。嗯,现在我尝试了你的代码,有一个问题,[]中没有引入密钥,我无法分配1:{}如果我更新代码添加行$data\u array=array\u values$data\u array;,我必须更改我的js;,试试这个。好的,现在我们几乎要感谢你了,但是最后一件事,没有被删除的项目会改变它的格式并转换为示例{0:{name:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa},{name:bbbbbbbbbbbbbb,url:bbbbbbbbbbbb}]不,我下次测试它,它不会删除密钥,它会改变格式[{name:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[{"name":"asdf","url":"asdf"},{"name":"asfd","url":"dsaf"}]
$data_url = 'js/json.json';
$data_json = file_get_contents($data_url);
$data_array = json_decode($data_json, true);

// Next line just for testing
//$url = "asdf";    //  $_POST['URL']; ?
foreach($data_array as $key=>$val){
    // check URL
    if ($url == $val["url"]){
        // this deletes record from array
        unset($data_array[$key]);
    }
}
$data_array = array_values($data_array);
file_put_contents($data_url, json_encode($data_array));