2013-05-11 80 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