PHP Iterables

Iterable สามารถนำมากำหนดประเภทของอาร์กิวเมนต์ได้ ตัวอย่างเช่น

<?php
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

$arr = ["a", "b", "c"];
printIterable($arr);
?>

ไฟล์ที่ 1 ตัวอย่างการใช้ iterable

 

ตัวอย่างที่ 2 การส่งคืนค่าที่สามารถทำซ้ำได้

<?php
function getIterable():iterable {
  return ["a", "b", "c"];
}

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item."<br>";
}
?>

ไฟล์ที่ 2 การคืนค่าที่สามารถทำซ้ำได้ (loop)

 

การสร้าง Iterables
อาร์เรย์

อาร์เรย์ทั้งหมดเป็นแบบวนซ้ำดังนั้นอาร์เรย์ใด ๆ จึงสามารถใช้เป็นอาร์กิวเมนต์ของฟังก์ชันที่ต้องทำซ้ำได้

ตัวทำซ้ำ

ออบเจ็กต์ใด ๆ ที่ใช้ Iterator สามารถใช้เป็นอาร์กิวเมนต์ของฟังก์ชันที่ต้องทำซ้ำได้

ตัววนซ้ำประกอบด้วยรายการของรายการและมีวิธีการวนซ้ำ มันคอยชี้ไปที่องค์ประกอบใดองค์ประกอบหนึ่งในรายการ แต่ละรายการในรายการควรมีคีย์ที่ใช้ค้นหารายการได้

ตัววนซ้ำต้องมีวิธีการเหล่านี้:

  • current() ส่งคืนองค์ประกอบปัจจุบัน (ตัวชี้กำลังชี้ไป) สามารถเป็นข้อมูลประเภทใดก็ได้
  • key() ส่งคืนคีย์ที่เกี่ยวข้องกับองค์ประกอบปัจจุบันในรายการ สามารถเป็นจำนวนเต็ม, ทศนิยม , จริงเท็จ , หรือ สตริงเท่านั้น
  • next() ย้ายตัวชี้ไปยังองค์ประกอบถัดไปในรายการ
  • rewind() ย้ายตัวชี้ไปยังองค์ประกอบแรกในรายการ
  • valid() หากตัวชี้ภายในไม่ได้ชี้ไปที่องค์ประกอบใด ๆ (ตัวอย่างเช่นหากมีการเรียก
  • next () ที่ส่วนท้ายของรายการ) สิ่งนี้ควรส่งคืนเป็นเท็จ มันส่งคืนจริงในกรณีอื่น ๆ

ดังตัวอย่างที่ 3

 

ตัวอย่างที่ 3 

<?php
// Create an Iterator
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    // array_values() makes sure that the keys are numbers
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    // count() indicates how many items are in the list
    return $this->pointer < count($this->items);
  }
}

// A function that uses iterables
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

// Use the iterator as an iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>

ไฟล์ที่ 3 การสร้าง eterable

 

หากคุณพบคำที่สะกดผิด เว้นวรรคไม่ถูกต้อง ฯ โปรดแจ้งให้เราทราบ โดยลากคลุม (highlight) ข้อความนั้น แล้วกด Ctrl + Enter

ไม่สามารถคัดลอกเนื้อหานี้

Spelling error report

The following text will be sent to our editors: