Hàm Ds\PriorityQueue::pop()
trong PHP được sử dụng để loại bỏ và trả về phần tử có độ ưu tiên cao nhất từ Hàng đợi ưu tiên (PriorityQueue). Hàng đợi ưu tiên này tự động sắp xếp các phần tử dựa trên độ ưu tiên của chúng, với phần tử có độ ưu tiên cao nhất xuất hiện đầu tiên. Hãy cùng Vietnix tìm hiểu thêm về hàm Ds\PriorityQueue::pop()
trong PHP qua bài viết sau đây.
Hàm Ds\PriorityQueue::pop() là gì?
Hàm Ds\PriorityQueue::pop()
trong PHP được sử dụng để xóa và trả về giá trị có ở đầu Hàng đợi ưu tiên – PriorityQueue . Nói cách khác, hàm sẽ trả về giá trị có mức độ ưu tiên cao nhất trong PriorityQueue và xóa giá trị đó.
Khi hàm pop()
được gọi, phần tử ở đầu Hàng đợi (phần tử có độ ưu tiên cao nhất) sẽ được loại bỏ khỏi Hàng đợi và trả về cho người sử dụng. Quá trình này giúp đảm bảo rằng người dùng luôn nhận được phần tử có độ ưu tiên cao nhất đầu tiên, tối ưu hóa việc quản lý và truy cập dữ liệu theo thứ tự ưu tiên trong các ứng dụng PHP.
Cú pháp | mixed public Ds\PriorityQueue::pop ( void ) |
Tham số | Hàm này không chấp nhận bất kỳ tham số nào. |
Giá trị trả về | Hàm này trả về giá trị có mức độ ưu tiên cao nhất trong PriorityQueue này và xóa giá trị đó. Kiểu trả về của hàm được trộn lẫn (mixed) và phụ thuộc vào loại giá trị được lưu trữ trong PriorityQueue. |
Mọi người cũng xem:
Ví dụ minh hoạ hàm Ds\PriorityQueue::pop() trong PHP
Lưu ý: Một số công cụ dự án có thể không có hoặc không hỗ trợ thư viện/class ds trong PHP, người dùng có thể cân nhắc xây dựng một class ds của riêng mình thay thế tạm thời cho mục đích kiểm thử, nghiên cứu.
Có thể ví dụ như sau:
class SimplePriorityQueue {
private $queue;
private $capacity;
public function __construct() {
$this->queue = [];
$this->capacity = 16;
}
public function push($value, $priority) {
$this->queue[] = ['value' => $value, 'priority' => $priority];
usort($this->queue, function ($a, $b) {
return $b['priority'] <=> $a['priority'];
});
}
public function pop() {
if ($this->isEmpty()) {
throw new UnderflowException("Queue is empty");
}
return array_shift($this->queue)['value'];
}
public function peek() {
if ($this->isEmpty()) {
throw new UnderflowException("Queue is empty");
}
return $this->queue[0]['value'];
}
public function isEmpty() {
return empty($this->queue);
}
public function count() {
return count($this->queue);
}
public function copy() {
$copyQueue = new SimplePriorityQueue();
foreach ($this->queue as $item) {
$copyQueue->push($item['value'], $item['priority']);
}
return $copyQueue;
}
public function clear() {
$this->queue = [];
}
public function allocate($additionalCapacity) {
$this->capacity += $additionalCapacity;
}
public function capacity() {
return $this->capacity;
}
public function toArray() {
$result = [];
foreach ($this->queue as $item) {
$result[] = $item['value'];
}
return $result;
}
}
Triển khai thành chương trình:
<?php
// insert your handmade ds class from here
$pq = new SimplePriorityQueue();
$pq->push("Vietnix", 1);
$pq->push("Hosting", 2);
$pq->push("VPS", 3);
echo "Initial PriorityQueue is: \n";
print_r($pq);
// Pop an element
echo "\nPopped element is: ".$pq->pop().PHP_EOL;
echo "\n\nFinal PriorityQueue is: \n";
print_r($pq);
?>
Output như sau:
Initial PriorityQueue is: SimplePriorityQueue Object ( [queue:SimplePriorityQueue:private] => Array ( [0] => Array ( [value] => Three [priority] => 3 ) [1] => Array ( [value] => Two [priority] => 2 ) [2] => Array ( [value] => One [priority] => 1 ) ) ) Popped element is: Three Final PriorityQueue is: SimplePriorityQueue Object ( [queue:SimplePriorityQueue:private] => Array ( [0] => Array ( [value] => Two [priority] => 2 ) [1] => Array ( [value] => One [priority] => 1 ) ) )
Ví dụ 2:
<?php
// insert your handmade ds class from here
$pq = new SimplePriorityQueue();
$pq->push("Vietnix", 1);
$pq->push("Hosting", 3);
$pq->push("VPS", 2);
echo "Initial PriorityQueue is: \n";
print_r($pq);
// Pop an element
echo "\nPopped element is: ".$pq->pop().PHP_EOL;
echo "\n\nFinal PriorityQueue is: \n";
print_r($pq);
?>
Output trả về như sau:
Initial PriorityQueue is: SimplePriorityQueue Object
(
[queue:SimplePriorityQueue:private] => Array
(
[0] => Array
(
[value] => Hosting
[priority] => 3
)
[1] => Array
(
[value] => VPS
[priority] => 2
)
[2] => Array
(
[value] => Vietnix
[priority] => 1
)
)
)
Popped element is: Hosting
Final PriorityQueue is: SimplePriorityQueue Object
(
[queue:SimplePriorityQueue:private] => Array
(
[0] => Array
(
[value] => VPS
[priority] => 2
)
[1] => Array
(
[value] => Vietnix
[priority] => 1
)
)
)
Lời kết
Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về hàm Ds\PriorityQueue::pop()
trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác tại vietnix.vn để hiểu hơn về lập trình, chúc bạn thành công!