📜  循环遍历对象 php (1)

📅  最后修改于: 2023-12-03 15:25:37.559000             🧑  作者: Mango

循环遍历对象 PHP

在 PHP 中,可以使用循环遍历对象的属性和方法。在本文中,我们将介绍如何使用 foreach 循环和迭代器接口来遍历对象。

foreach 循环

PHP 中的 foreach 循环允许您遍历数组和对象。下面是一个示例,展示如何使用 foreach 循环遍历对象:

class Vehicle {
  public $model = "";
  public $make = "";
  public $year = "";
}

$car = new Vehicle();
$car->model = "Camry";
$car->make = "Toyota";
$car->year = "2016";

foreach($car as $key=>$value) {
  echo $key . ": " . $value . "<br>";
}

输出:

model: Camry
make: Toyota
year: 2016

在此示例中,我们创建了一个名为 Vehicle 的类,并实例化了一个名为 car 的对象。然后,我们使用 foreach 循环遍历了这个对象,并将对象的属性作为键,属性值作为值输出。

迭代器接口

PHP 中的迭代器接口可以让我们创建自定义的可遍历对象。迭代器接口定义了一些方法,可以让我们在对象上进行遍历。下面是一个示例,展示如何实现迭代器接口以遍历自定义对象:

class Book implements Iterator {
  private $position = 0;
  private $books = array(
    "Catch 22",
    "Fahrenheit 451",
    "1984",
    "Brave New World"
  );

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

  public function current() {
    return $this->books[$this->position];
  }

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

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

  public function valid() {
    return isset($this->books[$this->position]);
  }
}

$bookList = new Book;

foreach($bookList as $key=>$value) {
    echo $key . ": " . $value . "<br>";
}

输出:

0: Catch 22
1: Fahrenheit 451
2: 1984
3: Brave New World

在此示例中,我们创建了一个名为 Book 的类,该类实现了迭代器接口。该类包含一个名为 books 的数组,可以在遍历对象时返回。该类的每个方法都是迭代器接口的方法。

在主程序中,我们实例化了一个名为 bookList 的新 Book 对象,并使用 foreach 循环遍历了该对象。在每次迭代中,foreach 循环调用 $bookList->current() 方法以获取当前元素,并将其输出。然后,foreach 循环通过调用 $bookList->next() 方法来移动到下一个元素。直到 $bookList->valid() 方法返回 false 为止,遍历将一直进行。