【问题标题】:How to push large set of strings to SplObjectStorage in PHP and if string exist not to push如何在 PHP 中将大量字符串推送到 SplObjectStorage,如果字符串存在则不推送
【发布时间】:2014-06-15 14:31:32
【问题描述】:

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

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

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

【问题讨论】:

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

标签: php oop splobjectstorage


【解决方案1】:

这里的问题是你更新的是同一个对象,而对象本身并没有被添加两次。

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

$array = [];

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多