Php 数组:数组移位($arr)还是$arr[0]?
你会用哪一个Php 数组:数组移位($arr)还是$arr[0]?,php,arrays,Php,Arrays,你会用哪一个 基本上我只想从数组中获取第一个元素,就是这样。array\u shift实际上会从数组中删除指定的值。不要使用它,除非你真的想减少阵列 请参见此处:您将使用$arr[0]array\u shift从数组中删除第一个元素 编辑 这个答案实际上介于不完整和明显错误之间,但由于两位jon的评论,我认为它实际上应该保持不变,以便其他人能够看到该论述 正确答案是: reset是返回数组的第一个定义索引的方法。即使在非关联数组中,这也可能不是0索引 array\u shift将删除并返回在
基本上我只想从数组中获取第一个元素,就是这样。
array\u shift
实际上会从数组中删除指定的值。不要使用它,除非你真的想减少阵列
请参见此处:您将使用
$arr[0]
array\u shift
从数组中删除第一个元素
编辑
这个答案实际上介于不完整和明显错误之间,但由于两位jon的评论,我认为它实际上应该保持不变,以便其他人能够看到该论述 正确答案是:
是返回数组的第一个定义索引的方法。即使在非关联数组中,这也可能不是reset
索引0
将删除并返回在array\u shift
reset
OP假设,
$arr[0]
是第一个索引,但在特定情况下并不准确。嗯,它们做的事情不同
- 从数组中取出第一个元素,并将其提供给您
只需将它提供给您。。。如果数组有数字键$arr[0]
另一种适用于关联数组的方法是。这确实会移动数组的内部指针,但除非您使用这些函数,否则这不太可能影响您。是否也要修改
arr
数组array\u shift
删除数组的第一个元素并返回它,因此数组已更改$arr[0]
仅提供第一个元素
我会使用
$arr[0]
,除非我明确想要修改数组。您可以稍后添加代码以使用arr
数组,而忘记它已被修改。根据您的需要,$arr[0]更可取,因为它更快。array\u shift用于其他情况。arrshift更可靠,总是返回数组中的第一个元素,但这也会通过删除该元素来修改数组
如果数组不是从0索引开始,而是将数组本身单独保留,则arr[0]将失败
一种更复杂但可靠的方法是:
$keys = array_keys($arr);
$first = $arr[$keys[0]];
如果需要数组的第一个元素,请使用$arr[0]表单。优点-简单、可读性和可维护性。把事情搞清楚
编辑:仅当您知道数组具有从0开始的默认键时,才使用索引0。使用数组\u shif,如果您有两个操作:
如果通过索引访问,实际上只有一个操作。如果不想更改所讨论的数组,请使用
$arr[0]
(它只获取第一个元素),否则如果要从$arr
中删除$arr
的第一个元素,请使用数组移位($arr)
例如:
$arr=array(3,-6,2);
$foo=$arr[0]; //$foo==3 and $arr==array(3,-6,2).
$bar=array_shift($arr); //$bar==3 and $arr==array(-6,2).
ETA:正如其他人指出的,请确保您的数组不是关联数组(即键为0,1,…,
(sizeof($arr)-1)
),否则这可能不起作用。$arr[0]
仅当数组作为数字键时才起作用
array\u shift
从数组中删除元素并修改数组本身
如果不确定第一个键是什么,并且不想将其从数组中删除,则可以使用:
<?php
foreach($arr $k=>$v){
$value = $v;
break;
}
如果有关联数组,也可以使用重置($arr)
:它返回第一个元素(不删除),并设置指向该元素的数组指针
但是最快的方法是$arr[0]
以上都不是<代码>$first=重置($array)代码>是您想要的。不管你怎么说,它都能正常工作。@Jon:我已经讲过了。:)@托玛拉基雷特·卡尔:那么。。。那么我应该删除评论吗?@Jon:不,现在没用了。不管怎么说,这个问题现在到处都是重复的回答。还有许多可能的输入,例如array('foo'=>'bar')
或array(1=>1,0=>0)
。如果你想一想,你的答案如下:要读取$arr
的第一个元素,请使用$arr[0]
。但是,仅当第一个元素具有键0
时,才能执行此操作。这可能没有误导性,但并不完全有用。为什么不让它有用呢?:)我从其他人那里看到的数字/关联注释非常重要基于这个问题,关联数组不是问题。如果你只想从数组中获取第一个元素,那就是了。
那么这个答案是正确的,如果不是最完整的。这不是我的问题,数组的第一个元素和索引为零的元素在PHPNo中是不等价的,但我读到的问题类似于,“如果在草莓和开心果之间做出选择,那就说你最喜欢的冰淇淋吧。”正确的答案是两者都不是(奶酪蛋糕的超级粉丝)。但是,假设我在这些选择的范围内工作,我会选择草莓。-1:同意乔恩·达克斯塔的观点。我真的很想听听你是如何证明这一点的。$arr[0]
仍然不能正确使用数组(1=>1,0=>0)
。
<?php
reset($arr);
$value = current($arr);