[英]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.