在PHP中更新父对象/数组

在PHP中更新父对象/数组,php,arrays,json,Php,Arrays,Json,我想更新decodedObj中的一些嵌套数据(见下文)。基本上,目前我正在深入到对象中一个名为“Indications”的数组,然后在该数组中进一步找到一个键值对为“ID”:“inID”(从url传递)的对象。然后,我在同一个对象中被另一个键值对从该对象中删除。现在我遇到的问题是更新指示sobj中的值。 我需要更新indicationsObj,因为这个脚本的目的是实际更新JSON文件 $jsonData = file_get_contents("./data/ComUserJsonDummy.j

我想更新
decodedObj
中的一些嵌套数据(见下文)。基本上,目前我正在深入到对象中一个名为“Indications”的数组,然后在该数组中进一步找到一个键值对为“ID”:“inID”(从url传递)的对象。然后,我在同一个对象中被另一个键值对从该对象中删除。现在我遇到的问题是更新指示sobj中的值。 我需要更新indicationsObj,因为这个脚本的目的是实际更新JSON文件

$jsonData = file_get_contents("./data/ComUserJsonDummy.json");
$decodedObj = json_decode($jsonData, true);
$IndicationsObj = json_encode($decodedObj["Indications"]);

// Filter the Indications object based of the ID
$foundObj = array_filter(
    json_decode($IndicationsObj),
    function ($obj) {
        return $obj->ID == $_GET["inID"];
    }
);

// Update the columnName of the found object
$foundObj[0]->CommonName = $_GET["columnName"];

您可以同时进行查找和更新

foreach($IndicationsObj as &$obj){
    if($obj->ID == $_GET["inID"]){
        $obj[0]->CommonName = $_GET["columnName"];
    }
}

您可以同时进行查找和更新

foreach($IndicationsObj as &$obj){
    if($obj->ID == $_GET["inID"]){
        $obj[0]->CommonName = $_GET["columnName"];
    }
}

我认为您可以通过使用和在
$decodedObj
中查找
ID
值,然后在创建
$IndicationsObj
之前设置相应的
CommonName
来大大简化代码:

$jsonData = file_get_contents("./data/ComUserJsonDummy.json");
$decodedObj = json_decode($jsonData, true);
if (($key = array_search($_GET["inID"], array_column($decodedObj['Indications'], 'ID'))) !== false) {
    $decodedObj['Indications'][$key]['CommonName'] = $_GET["columnName"];
}
$IndicationsObj = json_encode($decodedObj["Indications"]);

我认为您可以通过使用和在
$decodedObj
中查找
ID
值,然后在创建
$IndicationsObj
之前设置相应的
CommonName
来大大简化代码:

$jsonData = file_get_contents("./data/ComUserJsonDummy.json");
$decodedObj = json_decode($jsonData, true);
if (($key = array_search($_GET["inID"], array_column($decodedObj['Indications'], 'ID'))) !== false) {
    $decodedObj['Indications'][$key]['CommonName'] = $_GET["columnName"];
}
$IndicationsObj = json_encode($decodedObj["Indications"]);

这是可行的,但是当尝试回显$decodedObj时,它会返回字面上的单词“Array”,当我将其包装在
json\u encode
中时,则不会返回任何内容。@TomDickson您不能
回显$decodedObj
,因为它是一个数组。但是
echo json\u encode($decodedObj)
应该给出一个有效的string@TomDickson你能分享一些更多的信息来帮助调试这个问题吗?JSON的一个示例可以让我很容易地测试代码。这是可行的,但是当尝试回显$decodedObj时,它会返回字面上的单词“Array”,当我将它包装在
JSON\u encode
中时,什么也没有返回。@TomDickson你不能
回显$decodedObj
,因为它是一个数组。但是
echo json\u encode($decodedObj)
应该给出一个有效的string@TomDickson你能分享一些更多的信息来帮助调试这个问题吗?JSON的一个示例将使我能够轻松地测试代码。