21xrx.com
登录
文章检索 我的文章 写文章
php iterables.
2021-07-23 16:16:35 深夜i     --     --
p h p t e r a b l e s .


PHP - 什么是迭代?

可迭代是可以使用foreach()循环的任何变量。

可迭代的伪型在PHP 7.1中引入,它的返回值可以用作函数参数和函数的数据类型。


PHP - 使用Iterables

iterable关键字可以用作函数参数作为返回函数的返回值:

使用迭代函数参数:

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

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

返回一个iterable:

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

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item;
}
?>

 


PHP - 创建迭代

数组

所有数组都是迭代的,所以任何数组都可以用作需要迭代的函数的参数。

迭代器

实现迭代器接口的任何对象都可以用作函数的参数 。

迭代器包含一个对象列表,并提供循环的方法。 它保留了一个 指向列表中的其中一个元素。 列表中的每个元素都应该有一个键可以 用来找到该元素。

迭代器必须具有这些方法:

  • current() - 返回指向当前元素的指针。 它可以是任何数据类型
  • key()返回与列表中当前元素关联的下标。 它只能是整数,float,boolean或字符串
  • Next()将指针移动到列表中的下一个元素
  • relwind()将指针移动到列表中的第一个元素
  • valid()如果内部指针没有指向任何元素(例如,如果next() 在列表结束时被调用,这应该返回false。 它在任何情况下都返会当前元素

实现迭代器界面并将其用作可迭代:
 

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


 

  
  
下一篇: PHP MySQL数据库

评论区

{{item['qq_nickname']}}
()
回复
回复