TECH I.S.

PHP イテラブル


PHP - イテラブルとは?

イテラブルは、foreach()でループできる任意の値です。

iterable疑似型はPHP7.1で導入され、関数の引数と関数の戻り値のデータ型として使用できます。

PHP - イテラブルの使用

iterableキーワードは、関数の引数のデータ型または関数の戻り型として使用できます。

反復可能な関数引数を使用します。

<?php function printIterable(iterable $myIterable) {   foreach($myIterable as $item) {     echo $item;   } } $arr = ["a", "b", "c"]; printIterable($arr); ?>

イテラブルを返します。:

<?php function getIterable():iterable {   return ["a", "b", "c"]; } $myIterable = getIterable(); foreach($myIterable as $item) {   echo $item; } ?>


PHP - イテラブルの作成

配列

すべての配列は反復可能であるため、任意の配列を反復可能を必要とする関数の引数として使用できます。

イテレータ

Iteratorインターフェイスを実装するオブジェクトは、反復可能を必要とする関数の引数として使用できます。

イテレータにはアイテムのリストが含まれ、それらをループするメソッドが提供されます。リスト内の要素の1つへのポインターを保持します。リスト内の各アイテムには、アイテムを見つけるために使用できるキーが必要です。

イテレータには次のメソッドが必要です。

  • current()- ポインターが現在指している要素を返します。任意のデータ型を使用できます。
  • key()リスト内の現在の要素に関連付けられているキーを返します。整数、浮動小数点数、ブール値、または文字列のみを指定出来ます。
  • next()ポインタをリスト内の次の要素に移動します。
  • rewind()ポインタをリストの最初の要素に移動します。
  • valid()内部ポインターがどの要素も指していない場合 (たとえば、next()がリストの最後で呼び出された場合)、これはfalseを返す必要があります。それ以外の場合はtrueを返します。

Iteratorインターフェイスを実装し、 iterableとして使用します。

<?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); ?>



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細