PHP イテラブル インターフェイス

PHPz
リリース: 2023-08-20 14:50:01
転載
891 人が閲覧しました

PHP Iterable接口

はじめに

Iterator インターフェイスは、抽象的な Traversable インターフェイスを拡張します。 PHP は、多くの一般的な関数に対して、多数の組み込みイテレータ (SPL イテレータ と呼ばれる) を提供します。たとえば、ArrayIteratorDirectoryIterator などです。 Iterator インターフェースを実装するユーザー クラスは、その中で定義されている抽象メソッドを実装する必要があります。

構文

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
}
ログイン後にコピー

メソッド

Iterator::current — 現在の要素を返します

Iterator::key — 現在の要素のキーを返します

Iterator::next — 次の要素に移動

Iterator::rewind — イテレータを最初の要素まで巻き戻す

Iterator::valid — 現在の位置が有効かどうかを確認する

IteratorAggregate または Iterator インターフェイスを実装する場合、implements 句の名前の前にそれらをリストする必要があります。

イテレータの例

次の PHP スクリプトでは、インターフェイスを実装するクラスにプライベート変数が配列として含まれています。イテレータの抽象メソッドを実装することで、foreach ループと next() メソッドを使用して配列を反復処理できます。

Example

<?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]);
   }
}
?>
ログイン後にコピー

foreach ループを使用すると、MyIterator オブジェクトの配列プロパティを反復できます。

$it = new myIterator();
foreach($it as $key => $value) {
   echo "$key=>". $value ."</p><p>";
}
ログイン後にコピー

呼び出しによって反復を実行することもできます。 while ループnext() メソッドを実行します。ループを開始する前に、必ず反復子を rewind してください。

$it->rewind();
do {
   echo $it->key() . "=>" .$it->current() . "</p><p>";
   $it->next();
}
while ($it->valid());
ログイン後にコピー

出力

どちらの場合も、配列プロパティを走査すると次の結果が表示されます

0=>10
1=>20
2=>30
3=>40
ログイン後にコピー

以上がPHP イテラブル インターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!