PHP-在修改对象时,间接修改重载属性无效


PHP - Getting Indirect modification of overload property has no effect when modifying object

我在这里疯了!我在尝试执行以下操作时遇到此错误:

 $adGroups = $adSet->getAdGroups($fields)->getArrayCopy();
    BioCommandController::log("Syncing '{$adSet->{AdSetFields::NAME}}' groups: " . count($adGroups));
    foreach($adGroups as $adGroup) {
        echo "<pre>";
        if($adGroup->conversion_specs[0]){
            $adGroup->conversion_specs[0]['action_type'] = $adGroup->conversion_specs[0]['action.type'];
            unset($adGroup->conversion_specs[0]['action.type']);

我有对象$adGroups,这个对象来自facebook。我需要将$key$adGroup->conversion_specs[0]['action.type']修改为$adGroup->conversation_specic[0][操作类型']原因是我需要将这个对象保存在mongoDB数据库中,而它不接受这个密钥格式!

我试过做一些显而易见的事情,为对象创建正确的键,并在其中插入内容,然后取消设置我不想要的键,但它会引发错误。

我真的很迷茫,有什么解决办法吗????

我已经读了好几期关于这个错误的文章,但没有一期对我有帮助!extend ArrayObject解决方案对我不起作用,因为我的类已经扩展了其他类(它来自一个框架,yii)。所以我不想做一个巨大的偷工减料来扩展它。

我不明白为什么这不起作用,我一直都这么做,而且过去效果很好,太令人讨厌了。

感谢

我仍然不确定为什么这不起作用,但我已经改变了我的方法,至少可以做我需要的事情:

 //We recreate the peace of the object that needs to be modified
            $newKey = $adGroup->conversion_specs[0];
            $data = $adGroup->conversion_specs[0]['action.type'];
            unset ($newKey['action.type']);
            $newKey['action_type'] = $data;
       $adGroup->conversion_specs = $newKey;