代码之家  ›  专栏  ›  技术社区  ›  valk

是否可以在PHP中删除对象的属性?

  •  160
  • valk  · 技术社区  · 15 年前

    如果我有 stdObject $a .

    当然分配一个新的财产没有问题, 一美元 ,

    $a->new_property = $xyz;
    

    但是我想把它去掉,所以 unset 在这里毫无帮助。

    $a->new_property = null;
    

    是这样的。但有没有更“优雅”的方式呢?

    3 回复  |  直到 7 年前
        1
  •  404
  •   Nathan Arthur user2811108    6 年前
    unset($a->new_property);
    

    例子:

    $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())
    
        2
  •  45
  •   Greg    5 年前

    这也特别适用于在对象上循环的情况。

    unset($object[$key])
    

    更新

    较新版本的PHP抛出致命错误 Fatal error: Cannot use object of type Object as array 如@CXJ所述。在这种情况下,你可以用括号代替

    unset($object->{$key})
    
        3
  •  1
  •   dandyboh    7 年前

    如果在对象上循环,也可以使用此方法。

    unset($object->$key);
    

        4
  •  0
  •   Ashiq Dey    5 年前

    这个代码在循环中对我来说很好

    $remove = array(
        "market_value",
        "sector_id"
    );
    
    foreach($remove as $key){
        unset($obj_name->$key);
    }