取消对象中的属性

时间:2014-03-24 20:37:32

标签: php arrays unset

我试图取消对象中的某些内容。

foreach($curdel as $key => $value) {
if ($value == $deletedinfo[0]) {
    print_r($key);
    print_r($curdel);
    unset($curdel[$key]);
}
}

正如所料,$key返回正确的值(0),$curdel返回整个数组。但试图取消设置$curdel[$key]会打破一切。甚至试图print_r($curdel[$key])打破一切,我错过了什么?

我的对象如下:

stdClass Object ( [0] => IFSO14-03-21-14.csv [2] => EB_Bunny.jpg [3] => EB_White_Bear.jpg )

2 个答案:

答案 0 :(得分:4)

而不是:

unset($curdel[$key]);

尝试:

unset($curdel->$key);

通过[]访问/修改数组,但可以通过 - >

访问对象和类属性

答案 1 :(得分:2)

该问题的可能解决方案是添加对$value变量的引用:

foreach($curdel as $key => &$value) { //Note & sign
   if ($value == $deletedinfo[0]) {
       print_r($key);
       print_r($curdel);
       unset($curdel[$key]);
   }
}

&$value表示对实际数组元素的引用

也基于此(类似)示例回答:Unset an array element inside a foreach loop

<强> 更新

基于您的输入(STDClass而不是数组):首先将$curdel转换为数组:

$curdel = (array) $curdel ;

对象中的数字索引有点无效,只能通过特殊语法访问:

$object->{'0'} ;

这是一个非常糟糕的做法。

相关问题