gpt4 book ai didi

php - SplObjectStorage::contains 和 SplObjectStorage::offsetExists 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 01:26:00 24 4
gpt4 key购买 nike

PHP 文档不是很明确,仅指出:

SplObjectStorage::offsetExists 检查存储中是否存在对象。 (PHP >= 5.3.0)

SplObjectStorage::contains 检查存储是否包含提供的对象。 (PHP >= 5.1.0)

这对我来说几乎是同一件事。

问题:除了 offsetExists 仅在 5.3.0 中可用之外,两者之间还有什么区别?

<小时/>

我进行的小测试...

$s = new SplObjectStorage();
$o1 = new StdClass();
$o2 = new StdClass();
$o3 = "I'm not an object!";
$s->attach($o1);

var_dump($s->contains($o1));
var_dump($s->offsetExists($o1));
echo '<br>';
var_dump($s->contains($o2));
var_dump($s->offsetExists($o2));
echo '<br>';
var_dump($s->contains($o3));
var_dump($s->offsetExists($o3));

输出:

boolean true
boolean true

boolean false
boolean false

Warning: SplObjectStorage::contains() expects parameter 1 to be object, string given in index.php on line 15
null

Warning: SplObjectStorage::offsetExists() expects parameter 1 to be object, string given in index.php on line 16
null

最佳答案

它们完全相同。

offsetExists 被定义为 contains方法别名,包含在内只是为了符合 ArrayAccess 接口(interface).

您可以see for yourself in the source正在使用 SPL_MA(方法别名),并且还设置了几个其他别名。

  • offsetExists = 包含
  • offsetSet = 附加
  • offsetUnset = 分离

关于php - SplObjectStorage::contains 和 SplObjectStorage::offsetExists 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com