if (!is_scalar($data)) {
if (is_object($data)) {
if (isset($data->{$key})) {
//my logic here - unset($data->{$key});
}
} else {
if (isset($data[$key])) {
//my logic here - unset($data[$key]);
}
}
}
我必须做上面的事情,甚至不考虑对象上的静态属性等事情,可能还有更多边缘情况,是否有更简单的方法来实现这一目标?
我的意思是我想通过$ key访问$ data的孩子,所以我可以修改它,但我不知道$ data是什么类型的东西
最后要考虑的是我通过引用更改$ data,因此创建$ data-> {$ key}或$ data [$ key]的副本意味着原始副本上的unset将失败
答案 0 :(得分:0)
<?php
if (isset($data) && !is_scalar($data)) {
foreach ($data as $key => &$value) {
if ($key == $sub_iterator->key()) {
// custom logic here like unset($value);
}
}
}
我认为这对数组和对象都有效,只需要测试