📜  foreach 开关 * 简单 (1)

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

Foreach 开关 * 简单

Foreach 是一种常用的循环结构,常用于对数组或集合等数据结构进行遍历。在 PHP 中,foreach 循环还支持使用“开关”语句来控制循环行为,更加灵活。

基本语法
foreach ($array as $value) {
    // 循环体
}

上面这个语法中,$array 是要遍历的数组,$value 是每次遍历得到的元素;循环体中可以使用 $value 访问当前元素。

开关语法

在 foreach 循环中,我们可以使用 continue 和 break 关键字来控制循环行为:

  • continue:终止本次循环,开始执行下一次循环。
  • break:立即终止当前循环,直接跳出循环体。
// continue
foreach ($array as $value) {
    if ($value == 3) {
        continue;
    }
    echo $value . ' ';
}
// 输出:1 2 4 5 

// break
foreach ($array as $value) {
    if ($value == 3) {
        break;
    }
    echo $value . ' ';
}
// 输出:1 2 
接收键名

在遍历数组时,我们有时也需要同时访问键名和键值。可以通过“键名 => 键值”的形式来定义 foreach 循环中的变量:

foreach ($array as $key => $value) {
    echo $key . ' => ' . $value . ' ';
}
// 输出:0 => 1 1 => 2 2 => 3 3 => 4 4 => 5 
对对象的遍历

除了数组,我们还可以使用 foreach 循环来遍历对象的属性。要实现这个功能,可以在对象中定义一个迭代器( Iterator ),这个迭代器需要实现 Iterator 接口,包括以下 5 个方法:

  • rewind():重置迭代器,让它能重新从头开始迭代。
  • valid():检查迭代器是否还有下一个元素。
  • key():返回当前元素对应的键名。
  • current():返回当前元素的值。
  • next():将迭代器进一步向下迭代到下一个元素。
// 定义一个对象
class MyObject implements Iterator {
    private $position = 0;
    private $data = array(
        'foo',
        'bar',
        'baz'
    );

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

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

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

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

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

$obj = new MyObject();
foreach ($obj as $key => $value) {
    echo $key . ' => ' . $value . ' ';
}
// 输出:0 => foo 1 => bar 2 => baz 
小结

Foreach 循环是 PHP 中常用的循环结构,可以很方便地对数组进行遍历;同时还支持使用“开关”语句来控制循环行为;对于对象的遍历,需要定义一个迭代器并实现 Iterator 接口。以上就是 foreach 循环的基本用法和应用场景。