我试图取消对象中的某些内容。
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 )
答案 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'} ;
这是一个非常糟糕的做法。