【问题标题】:php unset causing internal server errorphp未设置导致内部服务器错误
【发布时间】:2014-03-20 12:55:57
【问题描述】:
function deleteThing() {

    if($_REQUEST ['entry'] == "") {
        exit;
    }

    $entry = $_REQUEST ['entry'];

    $file = 'entries.json';

    $json = json_decode(file_get_contents($file));

    unset($json[$entry]);

    file_put_contents($file, json_encode($json));


}

此代码试图删除索引 $entry 处的 JSON 子项,该子项作为数字传递。我不确定我是否正确使用 unset

【问题讨论】:

  • PHP 日志中的错误信息是什么?
  • json_decode 将 json 解码为 php stdClass,错误来自尝试取消设置该对象上的公共变量。使用 true 作为 json_decode 的第二个参数来获取一个数组。
  • 如果要删除文件,请使用 unlink() 函数 ...
  • 请不要在变量和[]之间加空格。

标签: php unset


【解决方案1】:

看来你需要这样尝试:
将第二个参数作为 true 传递将返回您使用过的数组。

$json = json_decode(file_get_contents($file),true);//assign as  array
if(isset($json[$entry])) { //check if it is set
    unset($json[$entry]);
}

如果您不愿意将第二个参数设为 true,那么您将获得对象。在这种情况下,您需要像这样访问:

$json->{$entry}

【讨论】:

  • 其实$json[$entry]是不存在的。 $json->{$entry} 确实存在(没有第二个参数 true)。
  • @user3420768:如果有帮助,那么您应该接受我的回答:)
【解决方案2】:

我认为您正在取消设置一个根本没有设置的变量。

可能是$json 没有获得价值。

这样做:

$json = json_decode(file_get_contents($file));
if (! empty($json[$entry])) {
  unset($json[$entry]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2023-03-22
    • 2015-11-23
    相关资源
    最近更新 更多