PHP each函数详解

一、介绍
each 函数是 PHP 内置的一个数组函数,用于从数组中返回当前键/值对并将数组指针向前移动一步。它的使用方法非常简单,但在实际开发中也有一些需要注意的地方。本文将详细介绍 each 函数的用法、语法以及一些常见问题和注意事项。
二、语法
each 函数的语法如下所示:
array each ( array &$array )
参数说明:
$array:必需,要遍历的数组。
返回值:
each 函数返回包含四个元素的数组,其中包括四个元素的关联数组,键分别为 1, value, 0, key:
- 1:当前键/值对的值。
- value:当前键/值对的值。等同于
$array[key]。 - 0:当前键/值对的键。
- key:当前键/值对的键。如果遍历到末尾,返回
false。
三、使用示例
下面通过几个示例来演示 each 函数的使用方法。
示例 1:基本使用
<?php
array = ['foo', 'bar', 'baz'];
// 遍历数组,并返回当前键/值对pair = each(array);
// 输出当前键/值对
echo '当前键:' .pair[0] . PHP_EOL;
echo '当前值:' . $pair[1] . PHP_EOL;
?>
运行结果:
当前键:0
当前值:foo
在示例中,我们定义了一个包含3个元素的数组 $array。然后使用 each 函数遍历数组,并将当前键/值对赋值给变量 $pair。最后输出当前键和值,可以看到当前键为0,值为foo。
示例 2:遍历到末尾
<?php
array = ['foo', 'bar', 'baz'];
// 遍历数组,并返回当前键/值对
while (pair = each(array)) {
// 输出当前键/值对
echo '当前键:' .pair[0] . PHP_EOL;
echo '当前值:' . $pair[1] . PHP_EOL;
}
?>
运行结果:
当前键:0
当前值:foo
当前键:1
当前值:bar
当前键:2
当前值:baz
在示例中,我们使用 while 循环遍历数组,并输出当前键和值。直到遍历到末尾,即 each 函数返回 false,结束循环。
示例 3:使用引用传递修改数组
<?php
array = ['foo' => 'hello', 'bar' => 'world'];
// 遍历数组,并修改数组的值
while (pair = each(array)) {array[pair[0]] = 'new ' .pair[1];
}
// 打印修改后的数组
print_r($array);
?>
运行结果:
Array
(
[foo] => new hello
[bar] => new world
)
在示例中,我们使用 while 循环遍历数组,并将每个值修改为 'new ' . $pair[1]。最后打印修改后的数组,可以看到数组值已被成功修改。
四、注意事项
在使用 each 函数时,有一些需要注意的地方。
- 如果使用
&$array传递数组的引用,在遍历完成后,需要使用reset函数重置数组指针,否则再次使用each函数时将无法遍历数组。
<?php
array = ['foo', 'bar', 'baz'];
// 遍历数组,并返回当前键/值对
while (pair = each(array)) {
// 输出当前键/值对
echo '当前键:' .pair[0] . PHP_EOL;
echo '当前值:' . pair[1] . PHP_EOL;
}
// 重置数组指针
reset(array);
// 再次遍历数组
while (pair = each(array)) {
// 输出当前键/值对
echo '当前键:' . pair[0] . PHP_EOL;
echo '当前值:' .pair[1] . PHP_EOL;
}
?>
运行结果:
当前键:0
当前值:foo
当前键:1
当前值:bar
当前键:2
当前值:baz
当前键:0
当前值:foo
当前键:1
当前值:bar
当前键:2
当前值:baz
each函数在 PHP 7.2 版本中已被废弃,并在 PHP 8.0 版本中被移除。推荐使用foreach循环来遍历数组,以兼容更高版本的 PHP。
<?php
array = ['foo', 'bar', 'baz'];
foreach (array as key =>value) {
// 输出当前键/值对
echo '当前键:' . key . PHP_EOL;
echo '当前值:' .value . PHP_EOL;
}
?>
运行结果与示例2相同。
五、总结
本文详细介绍了 PHP 中的 each 函数的用法、语法以及一些注意事项。通过示例演示了 each 函数的基本使用、遍历到末尾和使用引用传递修改数组的方法。最后指出了在使用 each 函数时需要注意的事项,并推荐了使用 foreach 循环来代替 each 函数的方式。
极客教程