函数名:SplPriorityQueue::compare()
适用版本:PHP 5 >= 5.3.0, PHP 7
用法: SplPriorityQueue::compare() 函数用于比较两个元素的优先级。它是SplPriorityQueue类的一个方法,用于自定义比较函数。在使用SplPriorityQueue类时,可以通过compare()方法来指定自定义的比较函数。
语法: public SplPriorityQueue::compare ( mixed $priority1 , mixed $priority2 ) : int
参数:
- $priority1: 第一个元素的优先级
- $priority2: 第二个元素的优先级
返回值: 比较结果的整数值。如果 $priority1 的优先级高于 $priority2,则返回一个正整数;如果 $priority1 的优先级低于 $priority2,则返回一个负整数;如果两个优先级相等,则返回 0。
示例: 下面是一个使用SplPriorityQueue::compare()方法的示例,展示了如何自定义比较函数来排序元素:
// 创建一个SplPriorityQueue对象
$queue = new SplPriorityQueue();
// 定义自定义的比较函数
function myCompare($priority1, $priority2) {
if ($priority1 == $priority2) {
return 0;
}
return ($priority1 > $priority2) ? -1 : 1;
}
// 设置自定义的比较函数
$queue->setExtractFlags(SplPriorityQueue::EXTR_DATA);
$queue->setExtractFlags(SplPriorityQueue::EXTR_PRIORITY);
$queue->setCompare('myCompare');
// 添加元素到队列
$queue->insert('Item 1', 3);
$queue->insert('Item 2', 1);
$queue->insert('Item 3', 2);
// 迭代输出队列中的元素
foreach ($queue as $item) {
echo $item . "\n";
}
输出结果:
Item 2
Item 3
Item 1
在上面的示例中,我们首先创建了一个SplPriorityQueue对象。然后,我们定义了一个名为myCompare的自定义比较函数,根据优先级的不同返回不同的值。接下来,我们使用setCompare()方法设置自定义的比较函数。最后,我们使用insert()方法将元素添加到队列中,并使用foreach循环迭代输出队列中的元素。由于我们自定义的比较函数,队列中的元素按照优先级从高到低的顺序输出。