【问题标题】:Add and update data in json file with php function使用 php 函数在 json 文件中添加和更新数据
【发布时间】:2021-09-11 11:18:40
【问题描述】:

我想用函数控制post来的数据,有数据就更新,没有数据就添加。 我正在使用以下代码进行更新和添加,但在第二次添加中,它既更新了现有信息,又再次添加了相同的信息。

我想知道我在哪里做错了,你能帮帮我吗?

$data = array('sure'=>'1', 'id'=>'38138373','t'=>'6', 's'=>'s3', 'p'=>'6');

function updateCart($data,$user_id,$cartid){
    $updateCart = [];
    $carts = getCart($user_id,$cartid);
    foreach ($carts as $i => $cart) {
       if($cart['id'] == $data['id'] && $cart['t'] == $data['t'] && $cart['s'] == $data['s']) {
           $newp = $cart['p']+$data['p'];
           
           $carts[$i]['p'] = $newp;
                
            } else {
            $carts[] = $data;
                }
            
        }
        
         putJson($carts,$user_id,$cartid);
}

/* $carts */

[
    {
        "sure": "1",
        "id": "38138373",
        "t": "8",
        "s": "s5",
        "p": 6
    },{
    "sure": "1",
    "id": "38138373",
    "t": "6",
    "s": "s3",
    "p": 9
}
]

这是函数之后的结果。

[
    {
        "sure": "1",
        "id": "38138373",
        "t": "8",
        "s": "s5",
        "p": 6
    },
    {
        "sure": "1",
        "id": "38138373",
        "t": "6",
        "s": "s3",
        "p": 9
    },
    {
        "sure": "1",
        "id": "38138373",
        "t": "6",
        "s": "s3",
        "p": 12
    },
    {
        "sure": "1",
        "id": "38138373",
        "t": "6",
        "s": "s3",
        "p": "3"
    }
]

文件应该是这样的

[
    {
        "sure": "1",
        "id": "38138373",
        "t": "8",
        "s": "s5",
        "p": 6
    },
    {
        "sure": "1",
        "id": "38138373",
        "t": "6",
        "s": "s3",
        "p": 15
    }
]

【问题讨论】:

  • $carts的内容是什么?
  • $carts 拉取json文件,即记录中的数据。
  • 您能否发布导致上述输出的$carts 实例。
  • 我编辑了题目,居然是上面,“这是函数后的结果。”下面是生成的 json 文件。并且每次添加数据时都会更新

标签: php arrays json


【解决方案1】:

下面的代码应该适合你:

function updateCart($data, $user_id, $cartid){
    $updateCart[] = $data;
    $carts = getCart($data, $user_id, $cartid);
    foreach ($carts as $cart) {
        if( ($cart['id'] == $data['id']) && ($cart['t'] == $data['t']) && 
($cart['s'] == $data['s'])) {
            $cart['p'] = $data['p'] + $cart['p'];
            $data['p'] = $cart['p'];
            $updateCart[0] = $cart;
        }
        $updateCart[] = $cart;
    }
    $updateCart[] = array_shift($updateCart); 
    return putJson($updateCart, $user_id, $cartid);
}

让我知道这是否可以。您应该尝试在代码的关键阶段添加断点,以检查输出是否正确。如何做到这一点取决于您自己,您的选择将取决于您使用的框架等。您可以先阅读有关var_dumpherePHP 文档。

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多