这必须很简单,但我似乎找不到答案......
我有一个通用的 stdClass 对象$foo
没有属性。我想添加一个新属性$bar
尚未定义。如果我这样做:
$foo = new StdClass();
$foo->bar = '1234';
严格模式下的 PHP 会抱怨。
将属性添加到已实例化的对象的正确方法(在类声明之外)是什么?
注意:我希望该解决方案能够使用 stdClass 类型的通用 PHP 对象。
关于这个问题的一些背景知识。我正在解码一个 json 字符串,它是一个 json 对象数组。json_decode()
生成 StdClass 对象的数组。我需要操作这些对象并为每个对象添加一个属性。
如果您绝对必须将属性添加到对象中,我相信您可以将其转换为数组,添加属性(作为新的数组键),然后将其转换回对象。唯一一次你遇到stdClass
对象(我相信)是当您将数组转换为对象或创建新对象时stdClass
从头开始对象(当然,当你json_decode()
有些事——我真傻,忘记了!)。
代替:
$foo = new StdClass();
$foo->bar = '1234';
你会这样做:
$foo = array('bar' => '1234');
$foo = (object)$foo;
或者,如果您已经有一个现有的 stdClass 对象:
$foo = (array)$foo;
$foo['bar'] = '1234';
$foo = (object)$foo;
也可作为 1 内衬:
$foo = (object) array_merge( (array)$foo, array( 'bar' => '1234' ) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)