Computer >> Máy Tính >  >> Lập trình >> PHP

Giao diện có thể lặp lại trong PHP

Giới thiệu

Trình lặp lại giao diện mở rộng trừu tượng Có thể duyệt qua giao diện. PHP cung cấp nhiều trình vòng lặp tích hợp sẵn (được gọi là trình vòng lặp SPL ) cho nhiều chức năng thông thường. Ví dụ là ArrayIterator , DirectoryIterator v.v ... Một lớp người dùng triển khai giao diện Iterator nên triển khai các phương thức trừu tượng như được định nghĩa trong đó.

Cú pháp

Iterator extends Traversable {
   /* Methods */
   abstract public current ( void ) : mixed
   abstract public key ( void ) : scalar
   abstract public next ( void ) : void
   abstract public rewind ( void ) : void
   abstract public valid ( void ) : bool
}

Phương pháp

Iterator ::current - Trả về phần tử hiện tại

Iterator ::key - Trả về khóa của phần tử hiện tại

Lặp lại ::tiếp theo - Chuyển tiếp đến phần tử tiếp theo

Trình lặp lại ::tua lại - Tua lại Trình lặp lại thành phần tử đầu tiên

Trình lặp lại ::hợp lệ - Kiểm tra xem vị trí hiện tại có hợp lệ không

Khi triển khai IteratorAggregate hoặc Trình lặp lại giao diện mở rộng Có thể duyệt, chúng phải được liệt kê trước tên của nó trong triển khai mệnh đề.

Ví dụ về lặp lại

Trong tập lệnh PHP sau, một lớp thực thi Giao diện chứa một mảng là biến riêng. Triển khai các phương thức trừu tượng của Iterator, chúng ta có thể duyệt qua mảng bằng cách sử dụng foreach vòng lặp cũng như với next () phương pháp.

Ví dụ

<?php
class myIterator implements Iterator {
   private $index = 0;
   private $arr = array(10,20,30,40);
   public function __construct() {
      $this->index = 0;
   }
   public function rewind() {
      $this->index = 0;
   }
   public function current() {
      return $this->arr[$this->index];
   }
   public function key() {
      return $this->index;
   }
   public function next() {
      ++$this->index;
   }
   public function valid() {
      return isset($this->arr[$this->index]);
   }
}
?>

Sử dụng foreach vòng lặp, chúng ta có thể lặp qua thuộc tính mảng của đối tượng MyIterator

$it = new myIterator();
foreach($it as $key => $value) {
   echo "$key=>". $value ."\n";
}

Lặp lại cũng có thể được thực hiện bằng cách clling next () phương thức trong vòng lặp while. Đảm bảo tua lại trình lặp trước khi bắt đầu vòng lặp

Ví dụ

$it->rewind();
do {
   echo $it->key() . "=>" .$it->current() . "\n";
   $it->next();
}
while ($it->valid());

Đầu ra

Trong cả hai trường hợp, việc duyệt qua thuộc tính mảng sẽ hiển thị kết quả sau

0=>10
1=>20
2=>30
3=>40