ZetCode

PHP next 函数

最后修改于 2025 年 3 月 13 日

PHP 的 next 函数将数组的内部指针前进到下一个元素并返回其值。它是 PHP 数组指针操作函数的一部分。

基本定义

next 函数将数组的内部指针向前移动一个元素。它返回下一个元素的值,如果没有更多元素则返回 false。

语法:next(array &$array): mixed。该函数会影响数组的内部指针。到达末尾后,它返回 false。

基本 next 示例

本示例演示了在使用 reset 设置初始位置后,如何使用 next 在数组中移动。

basic_next.php
<?php

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

// Set pointer to first element
reset($colors);

echo current($colors) . "\n"; 

// Move to next element
echo next($colors) . "\n";    

// Move to next element
echo next($colors) . "\n";    

// Attempt to move past end
var_dump(next($colors));      

这显示了基本的指针移动。重置后,我们使用 next 在数组中前进,获取每个值,直到 false 指示结束。

与 current 结合使用

nextcurrent 结合使用,可以在遍历数组的同时跟踪当前位置。

next_current.php
<?php

$fruits = ['apple', 'banana', 'cherry'];

reset($fruits);

while ($fruit = current($fruits)) {
    echo $fruit . "\n";
    next($fruits);
}


// apple
// banana
// cherry

此代码通过检查 current 并使用 next 前进来循环遍历数组。当 current 在末尾返回 false 时,循环停止。

边缘情况:空数组

next 在处理空数组时行为可预测,会立即返回 false。

empty_array.php
<?php

$empty = [];

reset($empty);
var_dump(next($empty)); 

由于没有要遍历的元素,next 会立即返回 false。此行为与其他指针函数一致。

遍历期间修改数组

在遍历期间更改数组可能会导致指针函数出现意外行为。

modify_during_traversal.php
<?php

$numbers = [1, 2, 3, 4];

reset($numbers);
echo current($numbers) . "\n"; 

next($numbers);
echo current($numbers) . "\n"; 

// Modify array
array_pop($numbers);

next($numbers);
echo current($numbers) . "\n"; 

删除最后一个元素后,指针仍然移动到之前是第三个元素的那个位置。数组修改会扰乱预期的指针行为。

next 之后重置

使用 next 到达末尾后,您必须 reset 指针才能再次遍历。

reset_after_next.php
<?php

$letters = ['a', 'b', 'c'];

reset($letters);
while ($letter = current($letters)) {
    echo $letter . "\n";
    next($letters);
}

// Pointer now at end
var_dump(current($letters)); // bool(false)

// Reset to traverse again
reset($letters);
echo current($letters) . "\n"; 

这表明在遍历之后,指针会停留在末尾,直到被显式重置。在用指针函数重新遍历数组之前,请务必重置。

最佳实践

来源

PHP next 文档

本教程通过实际示例介绍了 PHP next 函数,展示了数组指针操作和遍历技术。

作者

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

列出 所有 PHP 数组函数