使用 array_shift 移除元素
本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 13 课,共 68 课。
array_shift() 函数会从数组中移除第一个元素,并返回移除的值。它与 array_unshift() 的作用相反,后者会在数组开头添加元素。
它的工作原理如下:
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // 输出:Alice
print_r($queue); // 输出:Array ( [0] => Bob [1] => Charlie )
?>请注意,array_shift()既会修改原数组,也会返回被移除的元素。移除第一个元素后,所有剩余元素都会自动向前移动以填补空缺:“Bob”从索引 1 移到索引 0,“Charlie”从索引 2 移到索引 1。
这种重新索引会自动进行,确保数组保持正确的数字顺序。如果你对空数组使用 array_shift(),它会返回 null,且不会导致错误。
这个函数对于实现队列特别有用。队列按“先进先出”的顺序处理项目,例如处理排队的顾客,或按接收任务的顺序处理任务。
挑战
简单你会收到两个输入:一个以 JSON 格式表示的、正在排队等待的初始客户数组,以及一个表示要服务多少位客户的数字。读取这两个输入,将 JSON 字符串转换为数组,然后使用 array_shift() 多次移除队伍最前面的已服务客户,移除次数由指定数字决定,最后使用 print_r() 打印最终数组。
输入格式:两行。第一行包含一个 JSON 数组(示例:["Alice","Bob","Charlie","Diana"]),第二行包含要服务的客户数量(一个数字)。
预期输出:移除队伍最前面的已服务客户后得到的数组,使用 print_r() 显示。
亲手试试
<?php
// 读取顾客的 JSON 数组
$jsonInput = fgets(STDIN);
$customers = (array)json_decode($jsonInput, true);
// 读取需要服务的顾客人数
$numToServe = intval(fgets(STDIN));
// TODO:在下方编写你的代码
// 使用 array_shift() 从队列前端移除顾客
// 输出最终的数组
print_r($customers);
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: PHP 在线编译器