我想在一个简单的示例中测试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。
答案 0 :(得分:3)
array_shift()
是一个独立函数-您无需将其分配给一个值,它会自动从给定变量中取消设置它:
<?php
$a = ['a', 'b', 'c', 'd'];
array_shift($a);
print_r($a);
答案 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()将数组的第一个值移开并返回它, 将数组缩短一个元素并向下移动所有内容。所有 数字数组键将被修改以从零开始计数 而文字键不会受到影响。