Php 如何检查SplPriorityQueue中是否存在元素?
我有一个自定义的优先队列Php 如何检查SplPriorityQueue中是否存在元素?,php,priority-queue,spl,Php,Priority Queue,Spl,我有一个自定义的优先队列 class Application_Model_Astar_PQtest extends SplPriorityQueue { public function compare($priority1, $priority2) { if ($priority1 === $priority2) return 0; return $priority1 > $priority2 ? -1 : 1; } }
class Application_Model_Astar_PQtest extends SplPriorityQueue
{
public function compare($priority1, $priority2)
{
if ($priority1 === $priority2) return 0;
return $priority1 > $priority2 ? -1 : 1;
}
}
如何检查此队列中是否存在元素?A
SplPriorityQueue
实现了一个迭代器,因此只需对其进行迭代即可:
$foundIt = false;
foreach($queue as $item){
if($item !== 'element')
continue;
$foundIt = true;
break;
}
或者:
$foundIt = in_array('element', iterator_to_array($queue));
SplPriorityQueue
实现了一个迭代器,所以只需在其上迭代即可:
$foundIt = false;
foreach($queue as $item){
if($item !== 'element')
continue;
$foundIt = true;
break;
}
或者:
$foundIt = in_array('element', iterator_to_array($queue));
搜索时,您可能希望
克隆$queue
,否则所有项目将获得提取()
-ed。搜索时,您可能希望克隆$queue
,否则所有项目将获得提取()
-ed。