首页 > 解决方案 > array_shift 和 print_r 在 PHP 中表现怪异

问题描述

我想测试array_shift一个简单的例子:

$a = ['a', 'b', 'c', 'd'];
$rem = array_shift($a);
print_r($rem);

只返回 me: a,而不是数组:['b', 'c', 'd']

php.net文档array_shift说明如下:

array_shift() 将数组的第一个值移开并返回,将数组缩短一个元素并将所有内容向下移动。所有数字数组键都将被修改为从零开始计数,而文字键不会受到影响。

此函数应该删除第一个元素并返回所有其余的元素并重新排序。

现在,我按原样从文档站点复制了示例(尝试同时使用[]array()):

$stack = ["orange", "banana", "apple", "raspberry"];
$fruit = array_shift($stack);
print_r($stack);

现在这按预期返回:

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

我不明白这里刚刚发生了什么或我做错了什么。

我的示例仅在数组中的变量名称和元素方面有所不同。

而且我几乎不相信这个问题是因为我使用了单引号'

另外,这里有一个关于 Sandbox 的演示

标签: phparrays

解决方案


array_shift()是一个独立的函数 - 你不需要将它分配给一个值,它会自动从给定的变量中取消设置它:

<?php
    $a = ['a', 'b', 'c', 'd'];
    array_shift($a);
    print_r($a);

https://3v4l.org/GEr3g


推荐阅读