数组移位和打印在PHP中的行为
我想在一个简单的例子上测试数组移位和打印在PHP中的行为,php,arrays,Php,Arrays,我想在一个简单的例子上测试array\u shift: $a = ['a', 'b', 'c', 'd']; $rem = array_shift($a); print_r($rem); 它只返回我:a,而不是一个数组:['b','c','d'] 在array\u shift上的文档说明以下内容: array_shift()将数组的第一个值移位并返回, 将阵列缩短一个元素,并向下移动所有元素。全部的 数字数组键将被修改为从零开始计数 而文字键不会受到影响 这个函数应该删除第一个元素,并返回所有
array\u shift
:
$a = ['a', 'b', 'c', 'd'];
$rem = array_shift($a);
print_r($rem);
它只返回我:a
,而不是一个数组:['b','c','d']
在array\u shift
上的文档说明以下内容:
array_shift()将数组的第一个值移位并返回,
将阵列缩短一个元素,并向下移动所有元素。全部的
数字数组键将被修改为从零开始计数
而文字键不会受到影响
这个函数应该删除第一个元素,并返回所有剩余的元素和重新排序的键
现在,我从docs站点原样复制了这个示例(使用[]
和array()
进行了尝试):
现在,这一切如期而至:
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
我不明白这里发生了什么,我做错了什么
我的示例只在变量名和数组中的元素上有所不同
我几乎不相信这个问题是因为我使用了单引号
另外,这里还有一个。array\u shift()
是一个独立函数-您不需要将其赋值,它会自动将其从给定变量中取消设置:
<?php
$a = ['a', 'b', 'c', 'd'];
array_shift($a);
print_r($a);
在您的示例中,$rem
是从函数数组_shift
返回的值,如文档中所述,它将在打印时在另一侧返回已消除的索引值
print_r($a);
这将在执行函数后返回数组
array\u shift()
将数组的第一个值移位并返回它
“it”指的是“第一个值”,而不是“数组”。它移开第一个值并返回所述第一个值;该过程缩短了阵列的长度。请密切注意示例代码($fruit
)中返回的内容以及打印的内容($stack
)
要保持原始数组不变并返回新的较短数组,请执行以下操作:
$rem = array_slice($a, 1);
如php文档所示
array\u shift
的返回结果是被移位的数组的第一个值,并删除原始数组的第一个值
array_shift()将数组的第一个值移位并返回,
将阵列缩短一个元素,并向下移动所有元素。全部的
数字数组键将被修改为从零开始计数
而文字键不会受到影响
对现在我明白了。它是通过引用传递的,因此文档说:array\u shift(array&$array):mixed
。谢谢。在第二个示例中,您正在打印$stack,而在第一个示例中,您正在打印$rem。它返回第一个值,并修改实际数组。@AjayKumar Yes。在PHP的通过引用传递的世界中,这些事情可能会发生:)现在我不能删除这个问题:)请仔细阅读。array_shift()返回第一个元素并将其从数组中移除。数组本身已更改,但您将收到元素。
$rem = array_slice($a, 1);
array_shift ( array &$array ) : mixed