如何使用 PHP 中嵌套 属性 的另一个 stdClass 更新 stdClass 的值
How to update value of stdClass with another stdClass nested property in PHP
我有两个嵌套的 stdClass(多个值)。
$object1 = json_decode ('{"key":"value", "emailing":{"live":false, "test":true}}')
$object2 = json_decode ('{"key":"value", "params:{"emailing":{"live":false, "test":true}, "esp":"email"}}')
我想将第一个对象的 属性 更改为第二个对象的 属性。两者都是 stdClasses,使用 is_object 测试。
但是我无法将值复制到第一个对象。
$object1->emailing = $object2->params->emailing;
其中所有类型都是 stdClass。
您的问题只是 $object2
不是一个对象,因为 json_decode()
失败了。 json 字符串中的不平衡引号字符存在问题。以下是可以正常工作的固定版本:
<?php
$object1 = json_decode ('{"key":"value", "emailing":{"live":false, "test":true}}');
$object2 = json_decode ('{"key":"value", "params":{"emailing":{"live":false, "test":true}, "esp":"email"}}');
$object1->emailing = $object2->params->emailing;
print_r($object1);
输出为:
stdClass Object
(
[key] => value
[emailing] => stdClass Object
(
[live] =>
[test] => 1
)
)
在这种情况下,一个好主意始终是阅读您的代码引发的错误消息:"Trying to get property of non-object"。这清楚地指出了问题所在。还有一些基本的错误处理从来都不是一个坏主意...
其实你可以:)
您在 "params:{"emailing":
中有语法错误 - 它应该是 "params":{"emailing":
试试看:
$object1 = json_decode('{"key":"value", "emailing":{"live":false, "test":true}}');
$object2 = json_decode('{"key":"value", "params":{"emailing":{"live":"newvalue1", "test":"newvalue2"}, "esp":"email"}}');
// before
print_r($object1);
// after
$object1->emailing = $object2->params->emailing;
print_r($object1);
我有两个嵌套的 stdClass(多个值)。
$object1 = json_decode ('{"key":"value", "emailing":{"live":false, "test":true}}')
$object2 = json_decode ('{"key":"value", "params:{"emailing":{"live":false, "test":true}, "esp":"email"}}')
我想将第一个对象的 属性 更改为第二个对象的 属性。两者都是 stdClasses,使用 is_object 测试。 但是我无法将值复制到第一个对象。
$object1->emailing = $object2->params->emailing;
其中所有类型都是 stdClass。
您的问题只是 $object2
不是一个对象,因为 json_decode()
失败了。 json 字符串中的不平衡引号字符存在问题。以下是可以正常工作的固定版本:
<?php
$object1 = json_decode ('{"key":"value", "emailing":{"live":false, "test":true}}');
$object2 = json_decode ('{"key":"value", "params":{"emailing":{"live":false, "test":true}, "esp":"email"}}');
$object1->emailing = $object2->params->emailing;
print_r($object1);
输出为:
stdClass Object
(
[key] => value
[emailing] => stdClass Object
(
[live] =>
[test] => 1
)
)
在这种情况下,一个好主意始终是阅读您的代码引发的错误消息:"Trying to get property of non-object"。这清楚地指出了问题所在。还有一些基本的错误处理从来都不是一个坏主意...
其实你可以:)
您在 "params:{"emailing":
中有语法错误 - 它应该是 "params":{"emailing":
试试看:
$object1 = json_decode('{"key":"value", "emailing":{"live":false, "test":true}}');
$object2 = json_decode('{"key":"value", "params":{"emailing":{"live":"newvalue1", "test":"newvalue2"}, "esp":"email"}}');
// before
print_r($object1);
// after
$object1->emailing = $object2->params->emailing;
print_r($object1);