检索对未知数据结构PHP的子元素的引用

时间:2016-10-31 10:07:10

标签: php

    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将失败

1 个答案:

答案 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);
   }
 }
}

我认为这对数组和对象都有效,只需要测试