ZetCode

PHP each() 函数

最后修改于 2025 年 3 月 13 日

PHP 的 each 函数返回数组中的当前键值对,并移动数组指针。它对于数组迭代很有用。

基本定义

each 函数返回数组中的当前元素,并将内部指针向前移动。它返回一个包含四个元素的数组。

语法:each(array &$array): array|false。当指针到达末尾时返回 false。返回的数组包含 'key'、'value'、0 和 1。

基本 each() 示例

本示例演示了 each 迭代数组的基本用法。

basic_each.php
<?php

$fruits = ["apple" => "red", "banana" => "yellow", "grape" => "purple"];

while ($element = each($fruits)) {
    echo "Key: " . $element['key'] . ", Value: " . $element['value'] . "\n";
    echo "0: " . $element[0] . ", 1: " . $element[1] . "\n\n";
}

此代码使用 each 遍历数组。每次调用都会返回当前的键值对,并向前移动指针,直到到达末尾。

将 each() 与 list() 结合使用

each 可以与 list 结合使用以获得更简洁的代码。

each_with_list.php
<?php

$colors = ["red", "green", "blue"];

reset($colors); // Ensure pointer is at start
while (list($key, $val) = each($colors)) {
    echo "$key => $val\n";
}

在这里,listeach 返回的键值对解包。这种模式在 PHP 7.2 之前很常见,但现在已弃用。

带关联数组的 each()

each 与关联数组配合得特别好。

associative_each.php
<?php

$user = [
    "name" => "John Doe",
    "email" => "john@example.com",
    "age" => 30
];

while ($pair = each($user)) {
    echo "Field: " . $pair['key'] . ", Value: " . $pair['value'] . "\n";
}

此示例展示了 each 如何访问关联数组中的键和值。该函数返回数字和字符串索引。

在 each() 之前重置指针

在循环中使用 each 之前,务必重置数组指针。

reset_pointer.php
<?php

$numbers = [10, 20, 30];

// First iteration
while ($element = each($numbers)) {
    echo $element['value'] . " ";
}

echo "\n";

// Reset pointer for second iteration
reset($numbers);
while ($element = each($numbers)) {
    echo $element['value'] . " ";
}

如果没有 reset,第二个循环将不会执行,因为指针在第一次循环后就已经指向了数组的末尾。

弃用通知

此示例显示了 PHP 7.2+ 中的弃用警告以及替代方法。

deprecation_notice.php
<?php

$data = ["a", "b", "c"];

// Deprecated in PHP 7.2+, removed in PHP 8.0
while (list($key, $val) = each($data)) {
    echo "$key: $val\n";
}

// Modern alternative
foreach ($data as $key => $val) {
    echo "$key: $val\n";
}

each 函数自 PHP 7.2 起已弃用。此示例同时显示了旧语法和推荐的 foreach 替代方案。

最佳实践

来源

PHP each() 文档

本教程通过实际示例介绍了 PHP each 函数,展示了其在数组迭代场景中的用法。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 数组函数