为什么我们使用 ArrayAccess::offsetUnset(),而我们可以在 php 中使用 unset()?

Mum*_*ddy 1 php arrayaccess

为什么我们使用ArrayAccess::offsetUnset()代替我希望unset()足以使用。但是 php.net 指出:

注意:当类型转换为 (unset) 时不会调用此方法

谁能告诉我们如何使用它,它是否会自动从实现ArrayAccess接口的类中取消设置被调用的偏移元素?

参考链接http://php.net/manual/en/arrayaccess.offsetunset.php

谢谢 !!!

Pro*_*man 5

offsetUnset()当在unset()函数中使用数组访问表达式时,将调用该方法,如下所示:

unset($yourSpecialObject['abc']);
Run Code Online (Sandbox Code Playgroud)

但是在以下语句中没有调用它:

$yourSpecialObject['abc'] = null;         // offsetSet() is called instead
$yourSpecialObject['abc'] = (unset)'abc'; // offsetSet() is called instead
(unset)$yourSpecialObject['abc'];         // offsetGet() is called instead
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你我得到了你。但是我想到了一个问题,我知道类型转换,但是 **unset** 转换有什么作用?因为我只知道 **unset()** 只是取消设置变量。但是 **(unset)** 类型转换有什么作用呢? (4认同)
  • 好的,您的意思是 **(unset)** 类型将值转换为 **null**,正如其名称所表示的那样。所以类型转换为 **unset** 意味着 **null** 它。因为使用 **unset()** 沿其值销毁变量和类型转换为 **unset** 是两个抽象逻辑。 (4认同)