使用PHP将Shopware 6.5中的JSON键内容替换并保存的方法
P粉306523969
P粉306523969 2023-09-09 23:36:03
[PHP讨论组]

我正在处理一个Shopware项目,需要设置一个包含所有已处理订单的JSON。

这个JSON被存储在一个目录中,我已经找到并将其传递给一个变量$fil

$filer =  $order1->getOrderNumber() . '_' . $country2->getIso() . '.json';
$fil = __DIR__ . '/' . $filer;

$file_contents = file_get_contents($fil);

获取到的JSON存储在变量$fil中,然后传递给变量$jsonData

$jsonData = $fil;

我试图通过将JSON解码为关联数组来替换下面的键的值。

$data = json_decode($jsonData, true);

要替换的键如下(尝试替换ID)

$data['entity']['payments'][0]['state']['id'] = $logMessageId;

然后,我尝试将其保存回变量modifiedJsonData并替换回目录。

$modifiedJsonData = json_encode($data, JSON_PRETTY_PRINT);

file_put_contents($fil, $modifiedJsonData);

它似乎部分工作,但不完全,而不仅仅是替换(ID)。

如下所示:$data['entity']['payments'][0]['state']['id']

它替换了整个JSON的内容,而不仅仅是上述内容,JSON内容应该比下面的内容更多:

{
    "entity": {
        "payments": [
            {
                "state": {
                    "id": #####
                }
            }
        ]
    }
}

请帮忙,我可能做错了什么

P粉306523969
P粉306523969

全部回复(1)
P粉762730205

我还能通过以下方式绕过它:

$data = json_decode($jsonData, true, 512, JSON_BIGINT_AS_STRING);



    $data['entity']['payments'][0]['state']['id'] = $logMessageId;

        
        



$modifiedJsonData = json_encode($data, JSON_PRETTY_PRINT);
        
  
  

  $existingData = json_decode(file_get_contents($fil), true);
        
     
  

  $existingData['entity']['payments'][0]['state']['id'] = $data['entity']['payments'][0]['state']['id'];


 $updatedJsonData = json_encode($existingData, JSON_PRETTY_PRINT);
        
   
  

  file_put_contents($fil, $updatedJsonData);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号