<?php
class ExtendedSPLHeap extends \SPLHeap {
protected function compare($a, $b) {
if ($a->latitude == $b->latitude) {
return 0;
}
return ($a->latitude < $b->latitude) ? -1 : 1;
}
}
$citiesHeap = new \ExtendedSPLHeap();
$city = new \StdClass;
$city->name = "Birmingham";
$city->latitude = 52.4800;
$city->longitude = -1.9100;
$citiesHeap->insert($city);
$city = new \StdClass;
$city->name = "Bristol";
$city->latitude = 51.4600;
$city->longitude = -2.6000;
$citiesHeap->insert($city);
echo 'There are ', $citiesHeap->count(), ' cities in the heap', PHP_EOL;
echo 'FROM NORTH TO SOUTH', PHP_EOL;
$citiesHeap->top();
while ($citiesHeap->valid()) {
$city = $citiesHeap->current();
echo sprintf(
"%-20s %+3.4f %+3.4f" . PHP_EOL,
$city->name,
$city->latitude,
$city->longitude
);
$citiesHeap->next();
}
echo 'There are ', $citiesHeap->count(), ' cities in the heap', PHP_EOL;
preferences:
47.92 ms | 402 KiB | 5 Q