【问题标题】:Finding and replacing data in JSON via PHP通过 PHP 在 JSON 中查找和替换数据
【发布时间】:2020-10-25 14:39:05
【问题描述】:
[
  {
    "packID": 195,
    "destinationID": 41,
    "phase": "LOC0-LOCAL"
  },
  {
    "packID": 41,
    "destinationID": 26,
    "phase": "LOC7-FLY"
  },
  {
    "packID": 42,
    "destinationID": 10,
    "phase": "LOC5-FLY"
  }
]

我想更改包号(packID) 41 的阶段和目的地。为此,我首先删除第 41 部分并添加一个新包。但是,这不能正常工作,因为数字 41 可以在其他部分。如果是这样,它会删除其他部分。我该怎么做?

$packageID = 41;

$trPackages = json_decode($jsonContent, true);
    foreach ($trPackages as $key => $value) {
        if (in_array($packageID, $value)) {
            unset($value[$key]); 
            // Result: Deleted packID:41 and packID: 195 ..
            $trPackages[] = ['packID' => 41, 'destinationID' => 99, 'phase' => 'LOC99-FLY'];
        }
    }
$trPackages = json_encode($trPackages);
...

如何只更改包 41 中的数据?

【问题讨论】:

  • if ($packageID == $value['packID']) {?
  • @u_mulder 我试过了,但是这次没有变化。

标签: php arrays json multidimensional-array


【解决方案1】:

你试过了吗:

/* ... */
$trPackages = json_decode($json, true);
$packageID = 41;

foreach ($trPackages as $key => $value) {
    if ($value["packID"] == $packageID) {
        unset($trPackages[$key]); 
        // Result: Deleted packID:41 and packID: 195 ..
        $trPackages [] = ['packID' => 41, 'destinationID' => 99, 'phase' => 'LOC99-FLY'];
    }
}

/* ... */

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多