php数组(十九) array_shift 和array_unshift

1、array_shift  将数组开头的单元移出数组

返回值

返回移出的值,如果 array 为 空或不是一个数组则返回 null

(1)移除数组的第一个元素

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>

 输出:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

 

 

(2)删除大数组的第一个元素性能测试 

<?php
ini_set('memory_limit', '5G');

$arr = [];

for($i = 0 ; $i<= 10000000; $i++){
    $arr[] = $i;
}

$starttime = microtime(true);
echo "start:" . $starttime . "\n";
array_shift($arr);
$endTime = microtime(true);
echo  "end:" . $endTime . "\n";

//使用array_reverse + array_pop
$starttime = microtime(true);
echo "reverse start:" . $starttime . "\n";
$arr2 = array_reverse($arr);
array_pop($arr2);
$endTime = microtime(true);
echo  "reverse end:" . $endTime . "\n";

//直接使用unset
$starttime = microtime(true);
echo "unset start:" . $starttime . "\n";
unset($arr[0]);
$endTime = microtime(true);
echo  "unset end:" . $endTime;

 输出: unset的性能最高

start:1629257137.3949
end:1629257137.4434
reverse start:1629257137.4435
reverse end:1629257137.613
unset start:1629257137.613
unset end:1629257137.613

 

2、array_unshift — 在数组开头插入一个或多个单元

array_unshift(array &$arraymixed ...$values): int

array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

(1)插入多个元素示例:

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

 输出:

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

 

2、插入数组

<?php
$queue = array("orange", "banana");
$stack = array("apple", "red");
array_unshift($queue, $stack);
print_r($queue);
?>

 输出:作为一个元素整体插入

Array
(
    [0] => Array
        (
            [0] => apple
            [1] => red
        )

    [1] => orange
    [2] => banana
)

 

posted on 2021-08-18 11:37  1450811640  阅读(259)  评论(0编辑  收藏  举报