【问题标题】:How to check element exists in SplPriorityQueue?如何检查 SplPriorityQueue 中是否存在元素?
【发布时间】:2013-05-11 18:53:34
【问题描述】:

我已经自定义了 SplPriorityQueue。

class Application_Model_Astar_PQtest extends SplPriorityQueue 
{ 
    public function compare($priority1, $priority2) 
    { 
        if ($priority1 === $priority2) return 0; 
        return $priority1 > $priority2 ? -1 : 1; 
    } 
} 

如何检查该队列中是否存在元素?

【问题讨论】:

    标签: php priority-queue spl


    【解决方案1】:

    SplPriorityQueue 实现了一个迭代器,所以只需对其进行迭代:

    $foundIt = false;
    
    foreach($queue as $item){
    
      if($item !== 'element')
        continue;
    
      $foundIt = true;
      break;
    }
    

    或者:

    $foundIt = in_array('element', iterator_to_array($queue));
    

    【讨论】:

    • 搜索时你可能想clone $queue,否则所有项目都会得到extract()-ed。
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多