ZetCode

PHP array_shift 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_shift 函数会移除并返回数组的第一个元素。它对于需要 FIFO(先进先出)行为的队列式操作非常有用。

基本定义

array_shift 函数从数组中提取第一个元素。操作后,所有数字键都会从 0 开始重新索引。

语法:array_shift(array &$array): mixed。该函数会修改原始数组并返回移出的值。如果数组为空,则返回 null。

基本的 array_shift 示例

此示例演示了 array_shift 移除数组第一个元素的基本用法。

basic_array_shift.php
<?php

$fruits = ['apple', 'banana', 'cherry'];
$firstFruit = array_shift($fruits);

echo "Removed: $firstFruit\n"; 
print_r($fruits); 

此操作会移除数组中的 'apple' 并将其返回。剩余的元素将从 0 开始重新索引。原始数组会被修改。

在循环中使用 array_shift

使用循环中的 array_shift 逐个处理数组元素。

loop_array_shift.php
<?php

$tasks = ['task1', 'task2', 'task3'];

while (!empty($tasks)) {
    $currentTask = array_shift($tasks);
    echo "Processing: $currentTask\n";
}


// Processing: task1
// Processing: task2
// Processing: task3

此代码按顺序处理每个任务,并在处理时将其从数组中移除。循环会一直进行直到数组为空。

处理空数组

当对空数组调用 array_shift 时,它会返回 null。

empty_array.php
<?php

$emptyArray = [];
$result = array_shift($emptyArray);

var_dump($result); 

当数组为空时,array_shift 会在不修改数组的情况下返回 null。此行为对于错误处理很有用。

保留关联键

array_shift 只会重新索引数字键,而会保留字符串键。

associative_array.php
<?php

$user = [
    'name' => 'John',
    'age' => 30,
    0 => 'admin'
];

$firstValue = array_shift($user);

echo "Removed: $firstValue\n"; 
print_r($user);

数字键 (0) 被移除,而字符串键保持不变。该函数只重新索引数字数组键。

与 array_push 结合实现队列

使用 array_shiftarray_push 实现一个简单的队列。

queue_implementation.php
<?php

$queue = [];

// Enqueue items
array_push($queue, 'item1');
array_push($queue, 'item2');

// Dequeue items
$firstItem = array_shift($queue);
echo "Processed: $firstItem\n"; 

$secondItem = array_shift($queue);
echo "Processed: $secondItem\n"; 

此示例演示了一个 FIFO(先进先出)队列。项目被添加到末尾并从开头移除,从而保持正确的队列顺序。

最佳实践

来源

PHP array_shift 文档

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

作者

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

列出 所有 PHP 数组函数