如何在PHP中将大量字符串推送到SplObjectStorage,以及如果存在字符串则不推送


How to push large set of strings to SplObjectStorage in PHP and if string exist not to push

基本上,我需要的是将一大组字符串推送到SplObjectStorage,如果每个字符串不存在,则执行某种操作,如果它确实存在,则进行其他操作。

$o1->id = '11111';
$s->attach($o1);
$o1->id = '22222';
$s->attach($o1);

我在对象中只得到22222,或者它覆盖了对象。我需要得到两个,如果他们只匹配其中一个。我需要获得字符串的不同值

这里的问题是您正在更新同一个对象,并且对象本身没有添加两次。

如果你只使用字符串,那么使用数组会更有效率:

$array = [];
if (!isset($array['11111'])) {
    $array['11111'] = true;
}
// etc.

然后,您可以使用array_keys()来获取所有唯一的值。