Kirk 提供的示例不是最佳选择,有一个名为 "removeAll" 的方法,可以将 SplObjectStore 本身传递给它,顾名思义,它将移除所有存储的对象。
(PHP 5 >= 5.3.6, PHP 7, PHP 8)
SplObjectStorage::removeAllExcept — 从当前存储中移除所有对象,除了另一个存储中包含的对象
从当前存储中移除所有对象,除了另一个存储中包含的对象。
storage
包含要保留在当前存储中的元素的存储。
返回剩余对象的数目。
示例 #1 SplObjectStorage::removeAllExcept() 示例
<?php
$a = (object) 'a';
$b = (object) 'b';
$c = (object) 'c';
$foo = new SplObjectStorage;
$foo->attach($a);
$foo->attach($b);
$bar = new SplObjectStorage;
$bar->attach($b);
$bar->attach($c);
$foo->removeAllExcept($bar);
var_dump($foo->contains($a));
var_dump($foo->contains($b));
?>
上面的示例将输出类似于以下内容
bool(false) bool(true)
Kirk 提供的示例不是最佳选择,有一个名为 "removeAll" 的方法,可以将 SplObjectStore 本身传递给它,顾名思义,它将移除所有存储的对象。
您可以通过传递一个空的 SplObjectStorage 来移除所有元素
$splStorage->removeAllExcept(new SplObjectStorage());