Hàm Ds\PriorityQueue::peek()
trong PHP được sử dụng để nhìn vào phần tử đầu tiên (phần tử có độ ưu tiên cao nhất) của Hàng đợi ưu tiên mà không loại bỏ nó. Khi bạn muốn biết giá trị của phần tử tiếp theo mà không làm thay đổi cấu trúc của Hàng đợi, hàm này là lựa chọn lý tưởng. Hãy cùng Vietnix tham khảo thêm về hàm Ds\PriorityQueue::peek()
trong PHP qua bài viết sau đây.
Hàm Ds\PriorityQueue::peek() là gì?
Hàm Ds\PriorityQueue::peek() trong PHP được sử dụng để lấy giá trị hiện diện ở phía trước PriorityQueue. Ví dụ, nếu người dùng đang quản lý một danh sách các công việc theo độ ưu tiên và muốn xem công việc nào sẽ được thực hiện tiếp theo mà không thay đổi thứ tự của chúng, bạn có thể sử dụng hàm peek()
để kiểm tra giá trị của công việc có độ ưu tiên cao nhất mà không làm mất đi sự ưu tiên của nó trong Hàng đợi.
Cú pháp | mixed public Ds\PriorityQueue::peek ( 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ó ở phía trước PriorityQueue này. Kiểu trả về của hàm được trộn lẫn 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::peek() trong PHP
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 "PriorityQueue is: \n";
print_r($pq);
// Get element at the front
echo "\nElement at front is: " . $pq->peek() . PHP_EOL;
?>
Output như sau:
PriorityQueue is: SimplePriorityQueue Object ( [queue:SimplePriorityQueue:private] => Array ( [0] => Array ( [value] => VPS [priority] => 3 ) [1] => Array ( [value] => Hosting [priority] => 2 ) [2] => Array ( [value] => Vietnix [priority] => 1 ) ) [capacity:SimplePriorityQueue:private] => 16 ) Element at front is: VPS
Ví dụ 2: Nếu bạn không thêm giá trị vào hàng chờ, chương trình sẽ có dòng báo lỗi fatal sau đó.
<?php
$pq = new SimplePriorityQueue();
// insert your handmade ds class from here
echo "PriorityQueue is: \n";
print_r($pq);
// Get element at the front
echo "\nElement at front is: " . $pq->peek() . PHP_EOL;
?>
Output như sau:
PriorityQueue is: SimplePriorityQueue Object ( [queue:SimplePriorityQueue:private] => Array ( ) [capacity:SimplePriorityQueue:private] => 16 ) Fatal error: Uncaught UnderflowException: Queue is empty
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::peek()
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!