PHP中的array_unshift()函数:向数组头部添加元素
在 PHP 中,数组是一种非常常用的数据结构。虽然数组在 PHP 中有多个实现方式,但无论是普通数组还是关联数组,它们都共享一些常见的数组操作函数,如:添加元素、删除元素、修改元素、遍历数组等等。
其中,有一个非常实用的函数是 array_unshift(),这个函数可以向数组头部添加元素,也就是将一个元素插入到数组开头。
语法:array_unshift(array,value1,value2,...)
其中,array 代表要插入元素的数组,value1、value2 ... 是要插入的元素,可以有多个。
例如:
$fruits = array("apple", "banana");
array_unshift($fruits, "orange", "pear");
print_r($fruits);
上述代码将向 fruits 数组的头部添加两个元素,“orange” 和 “pear”,输出结果为:
Array ( [0] => orange [1] => pear [2] => apple [3] => banana )
可以看到,输出结果中 fruits 数组的头部已经添加了两个元素,而原有的元素 “apple” 和 “banana” 则依次后移了两个位置。
需要注意的是,在向数组头部添加元素时,如果数组的键名是数字,新元素将插入到索引最小的位置。如果键名是字符串,则新元素将插入到键名为 0 的位置,其他键名依此后移。
下面再举一个具体的例子:
$students = array("Tom" => 90, "Jerry" => 85);
array_unshift($students, "Lucy", 95);
print_r($students);
上述代码向 students 数组头部添加了两个元素,“Lucy” 和 95,输出结果为:
Array ( [0] => Lucy [1] => 95 [Tom] => 90 [Jerry] => 85 )
可以看到,“Lucy” 和 95 被插入到了键名为 0 和 1 的位置,而原有的 “Tom” 和 “Jerry” 分别作为键名和值被保留了下来。
此外,需要注意的是,array_unshift() 函数的返回值是插入元素后数组的长度,而不是新的数组本身。
在实际开发中,array_unshift() 函数经常用于实现队列(先进先出)数据结构。例如,可以编写一个“打印队列”,每次有新的打印任务时将任务添加到队列头部,然后按照队列顺序依次处理每个任务,直到队列为空为止。代码如下:
$printQueue = array();
array_unshift($printQueue, "task1");
array_unshift($printQueue, "task2");
array_unshift($printQueue, "task3");
while(!empty($printQueue)) {
$task = array_pop($printQueue);
echo "printing $task...
";
}
上述代码使用 array_unshift() 函数向打印队列头部添加了三个打印任务,然后通过 array_pop() 函数从队列尾部依次取出每个任务并打印。输出结果为:
printing task1... printing task2... printing task3...
总的来说,array_unshift() 函数是 PHP 数组操作中一个非常实用的函数,可以方便地向数组头部添加元素,非常适用于数组队列等常见场景。
