2013-05-11 78 views
1

我已经定制了SplPriorityQueue。如何检查元素是否存在于SplPriorityQueue中?

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

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

回答

4

一个SplPriorityQueue实现一个迭代器,所以只是遍历它:

$foundIt = false; 

foreach($queue as $item){ 

    if($item !== 'element') 
    continue; 

    $foundIt = true; 
    break; 
} 

或者:

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

你可能想搜索,否则所有的时候'$克隆queue'项目会得到'extract()'-ed。 – salathe 2013-05-11 19:07:00

+0

是的,好点:) – 2013-05-11 19:07:37