是否可以删除对象';PHP中的属性?

是否可以删除对象';PHP中的属性?,php,object,Php,Object,如果我有一个stdObject比如说,$a 确保分配新属性($a)没有问题 $a->new_property = $xyz; 但是我想删除它,所以unset在这里没有帮助 所以 是这样的。但是有没有更“优雅”的方式呢 unset($a->new_property); 这适用于数组元素、变量和对象属性 例如: $a = new stdClass(); $a->new_property = 'foo'; var_export($a); // -> stdClass::

如果我有一个
stdObject
比如说,
$a

确保分配新属性(
$a
)没有问题

$a->new_property = $xyz;
但是我想删除它,所以
unset
在这里没有帮助

所以

是这样的。但是有没有更“优雅”的方式呢

unset($a->new_property);
这适用于数组元素、变量和对象属性

例如:

$a = new stdClass();

$a->new_property = 'foo';
var_export($a);  // -> stdClass::__set_state(array('new_property' => 'foo'))

unset($a->new_property);
var_export($a);  // -> stdClass::__set_state(array())

这也特别适用于在对象上循环的情况

unset($object[$key])
unset($object->$key);
更新 较新版本的PHP抛出致命错误
致命错误:无法使用@CXJ提到的类型为object as array
的对象。在这种情况下,可以使用括号代替

unset($object->{$key})

如果在对象上循环,也可以这样做

unset($object[$key])
unset($object->$key);

无需使用括号。

此代码在循环中对我来说运行良好

$remove = array(
    "market_value",
    "sector_id"
);

foreach($remove as $key){
    unset($obj_name->$key);
}

你能告诉我你是如何使用unset的吗?在我看来,unset应该可以工作,但可能你复制了contextreally不确定unset()比=null更优雅,但可能这只是男人。无法直接取消设置具有整数键的属性。e、 g.
$o=(对象)数组('a','b','c')
(您必须将对象(返回)转换为数组,即使只是为了访问这些属性!)@YanickRochon,我的评论是关于
对象
,而不是
数组
;-)@danorton为什么有人会在头脑正常的情况下,将
数组
转换为
对象
?这毫无意义(即使PHP允许)。我不会通过评论来鼓励和传播坏的编程习惯:)无意冒犯。@YanickRochon如果您想合并两个对象的属性(没有方法,它们只是用作存储介质),这是有意义的:在这种情况下,最快、最简单的方法是将两个对象都转换为数组,以应用array_replace_recursive()并随后返回到对象上。至于为什么有人会使用对象只存储属性,这通常发生在从数据库(如MySQL)获取记录作为对象而不是数组(使用标准函数,如MySQL_fetch_object())的应用程序中
$k=0;未结算($o->$k)。您可以指定描述了哪些“较新”的版本吗?对我来说,使用PHP7.1
unset($object[$key])
unset($object->{$key})
不起作用(更准确地说,
unset($object['literal\u key'))
unset($object->{'literal\u key})
)。PS Hm,我可能错了,我认为我正在编辑的东西是一个对象,而不是一个数组没有从对象集合中取消设置属性。这个问题与@YannickRochon的问题相比没有添加任何新内容。你的答案使用
数组
,但问题是关于
stdClass
对象的。你说的没有错,但与问题无关。