如果我有stdObject
说$a
。
确定分配新属性$a
,
$a->new_property = $xyz;
但是我想删除它,所以unset
在这里毫无帮助。
所以,
$a->new_property = null;
有点儿。但是,有更“优雅”的方式吗?
答案 0 :(得分:287)
unset($a->new_property);
这适用于数组元素,变量和对象属性
** 编辑 **
我不知道你是如何使用unset()
的,但这就是它对我有用的方式:
$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())
答案 1 :(得分:37)
如果您在一个对象上循环,这也会特别有效。
unset($object[$key])
较新版本的PHP会抛出致命错误Fatal error: Cannot use object of type Object as array
,如@CXJ所述。在这种情况下,您可以使用括号
unset($object{$key})
答案 2 :(得分:1)
如果您正在遍历对象,这也适用。
unset($object->$key);
无需使用方括号。
答案 3 :(得分:1)
这段代码对我来说循环很好
$remove = array(
"market_value",
"sector_id"
);
foreach($remove as $key){
unset($obj_name->$key);
}
答案 4 :(得分:0)
将一个元素设置为 null 只是将元素的值设置为 null 元素仍然存在
取消设置元素意味着删除元素 它适用于数组、stdClass 对象用户定义的类以及任何变量
<?php
$a = new stdClass();
$a->one = 1;
$a->two = 2;
var_export($a);
unset($a->one);
var_export($a);
class myClass
{
public $one = 1;
public $two = 2;
}
$instance = new myClass();
var_export($instance);
unset($instance->one);
var_export($instance);
$anyvariable = 'anyValue';
var_export($anyvariable);
unset($anyvariable);
var_export($anyvariable);