在PHP中表现为array_shift和print_r异常

时间:2019-10-25 08:33:34

标签: php arrays

我想在一个简单的示例中测试array_shift

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

哪个只会返回我:a,而不是我返回的数组:['b', 'c', 'd']

array_shift上的

php.net文档规定以下内容:

  

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

该功能应该删除第一个元素,并使用重新排序的键返回所有其余元素。

现在,我按原样从docs网站复制了示例(尝试[]array()):

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

现在,这将按预期返回:

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

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

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

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

另外,这里是demo on Sandbox

4 个答案:

答案 0 :(得分:3)

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

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

https://3v4l.org/GEr3g

答案 1 :(得分:1)

  

array_shift()将数组的第一个值移开并返回

“ it” 是指“第一个值” ,而不是“数组” 。它移出第一个值并返回所述第一个值;该过程正在缩短阵列。请密切注意示例代码($fruit)返回的内容和打印内容($stack)。

要保留原始数组并返回一个较短的新数组,请执行以下操作:

$rem = array_slice($a, 1);

答案 2 :(得分:0)

在您的示例中,$rem是文档中声明的函数array_shift的返回值,它将在每次打印时返回消除的索引值,另一面

 print_r($a);

这将在执行函数后返回数组。

答案 3 :(得分:0)

如php doc array_shift所示。

array_shift的返回结果是移出的数组的第一个值,并删除原始数组的第一个值。

array_shift ( array &$array ) : mixed
     

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