php获取数组的第一个值(关联或不关联)

Mar*_*aio 5 php arrays

这可能听起来像一个愚蠢的问题.如果数组是否关联,如何在不事先知道的情况下获取数组的第一个值?

为了获得数组的第一个元素,我想这样做:

function Get1stArrayValue($arr) { return current($arr); }
Run Code Online (Sandbox Code Playgroud)

好吗?如果在函数调用之前移动了数组内部指针,它会产生问题吗?有没有更好/更聪明/更胖的方式来做到这一点?

谢谢!

Yac*_*oby 9

一个更好的想法可能是使用reset "将数组的内部指针倒回到第一个元素并返回第一个数组元素的值"

例:

function Get1stArrayValue($arr) { return reset($arr); }
Run Code Online (Sandbox Code Playgroud)

正如@therefromhere在下面的评论中指出的那样,这个解决方案并不理想,因为它改变了内部指针的状态.但是,我不认为这是一个很大的问题,因为像array_pop这样的其他函数也会重置它.
迭代数组时无法使用的主要问题不是在数组foreach副本上运行的问题.PHP手册说明:

除非引用了数组,否则foreach将对指定数组的副本进行操作,而不是数组本身.

这可以使用一些简单的测试代码显示:

$arr = array("a", "b", "c", "d");
foreach ( $arr as $val ){
    echo reset($arr) . " - " . $val . "\n";
}
Run Code Online (Sandbox Code Playgroud)

结果:

a - a
a - b
a - c
a - d
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,因为它会倒回内部指针,所以如果你正在迭代这个数组,你就不应该这样做. (5认同)