Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组:数组移位($arr)还是$arr[0]?_Php_Arrays - Fatal编程技术网

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,如果您有两个操作:

  • 检索firs元素
  • 移动阵列

  • 如果通过索引访问,实际上只有一个操作。

    如果不想更改所讨论的数组,请使用
    $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);