Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中将大量字符串推送到SplObjectStorage,如果字符串存在,则不推送到_Php_Oop_Splobjectstorage - Fatal编程技术网

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

如何在PHP中将大量字符串推送到SplObjectStorage,如果字符串存在,则不推送到,php,oop,splobjectstorage,Php,Oop,Splobjectstorage,基本上,我需要的是将一大组字符串推送到SplObjectStorage,如果每个字符串不存在,则执行某种操作,如果确实存在,则执行其他操作 $o1->id = '11111'; $s->attach($o1); $o1->id = '22222'; $s->attach($o1); 我在对象中只得到22222,否则它会覆盖对象。 我需要两个都要,如果他们只匹配其中一个。 我需要获取字符串的不同值,这里的问题是您正在更新同一个对象,而对象本身没有添加两次 如果只处理字符串

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

$o1->id = '11111';
$s->attach($o1);
$o1->id = '22222';
$s->attach($o1);
我在对象中只得到22222,否则它会覆盖对象。 我需要两个都要,如果他们只匹配其中一个。
我需要获取字符串的不同值,这里的问题是您正在更新同一个对象,而对象本身没有添加两次

如果只处理字符串,则使用数组会更有效:

$array = [];

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

之后,您可以使用
array\u keys()
获取所有唯一值。

您只有一个对象,
$o1
,因此您将覆盖该对象的值。创建一个新对象(
$o2
)并将其添加到存储中。从您发布的内容来看,没有理由一般使用对象,也没有理由特别使用对象存储。一个带有字符串键的简单数组也可以做到这一点。我有47000个字符串,我需要一些效率,我被你用什么卡住了,我想它会加快处理速度。对我来说,这听起来像是个问题。我认为你应该更新你的问题,询问你真正的问题。