繁体   English   中英

PHP JSON数组删除JSON文件中的一行

[英]PHP json array to delete a line in JSON file

某些PHP代码有问题。 我有一个联系人列表角度应用程序,用于添加和删除联系人。 我完成了添加部分,但是删除给了我一些麻烦。 在ng-click上,我使用$ http请求发送数据以删除JSON文件中的特定行。 它可以很好地发送数据,但我认为我的php出了点问题...

delete.php

    $jsonString = file_get_contents("contacts.json");
$contactData = json_decode($jsonString, true);

$getArray = array(
    "firstname" => $_POST['firstname'],
    "lastname"  => $_POST['lastname'],
    "number"    => $_POST['number'],
    "hobbies"   => $_POST['hobbies']
);

foreach ($contactData as $key => $value) {
    if($value->number == $getArray) {
        unset($contactData[$key]);
    }
}

$json = json_encode($contactData, JSON_PRETTY_PRINT);
//Add to JSON contents
file_put_contents("contacts.json", $json);

app.js

$scope.deleteRow = function(contact){
    console.log(contact);
    //var index = $scope.number.indexOf(item);
    $http({
        method   : 'POST',
        url      : 'delete.php',
        data     : $.param(contact),
        headers  : {'Content-Type': 'application/x-www-form-urlencoded'}
    })
    .success(function(data){
        updateService.listWasUpdated();
    });
};

HTML

<button type="button" class="btn btn-default" aria-label="Bold" ng-click="deleteRow(contact)">

任何帮助将不胜感激

因为使用assc==true调用了json_decode ,所以返回数组是关联的,因此您应该使用$value['number']而不是$value->number

为了简洁起见,这是带有array_filter函数的更正版本:

//load
$jsonString = file_get_contents("contacts.json");
$contactData = json_decode($jsonString, true);
//filter
$contactData = array_filter($contactData, function ($v) {return $v['number']!=$_POST['number'];});
//save
$json = json_encode($contactData, JSON_PRETTY_PRINT);
file_put_contents("contacts.json", $json);

问题是您没有在If语句的$ getArray下指定数字键,需要将其替换为$getArray['number']

if($value->number == $getArray['number']) {
    unset($contactData[$key]);
}

您没有使用SQLite来存储您的联系信息的原因吗? 这将使处理联系人的存储和操作变得容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM