是否可以删除对象';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.1unset($object[$key])
unset($object->{$key})
不起作用(更准确地说,unset($object['literal\u key'))
和unset($object->{'literal\u key})
)。PS Hm,我可能错了,我认为我正在编辑的东西是一个对象,而不是一个数组没有从对象集合中取消设置属性。这个问题与@YannickRochon的问题相比没有添加任何新内容。你的答案使用数组
,但问题是关于stdClass
对象的。你说的没有错,但与问题无关。