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

时间:2010-02-09 15:26:10

标签: php arrays

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

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

function Get1stArrayValue($arr) { return current($arr); }

没关系? 如果在函数调用之前移动了数组内部指针,它会产生问题吗? 有没有更好/更聪明/更胖的方法呢?

谢谢!

3 个答案:

答案 0 :(得分:9)

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

示例:

function Get1stArrayValue($arr) { return reset($arr); }

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

  

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

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

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

结果:

a - a
a - b
a - c
a - d

答案 1 :(得分:1)

要获取任何数组的第一个元素,您需要先重置指针。 http://ca3.php.net/reset

function Get1stArrayValue($arr) { 
  return reset($arr); 
}

答案 2 :(得分:0)

如果你不介意丢失数组中的第一个元素,你也可以使用

array_shift() - 关闭数组的第一个值并返回它,将数组缩短一个元素并将所有内容向下移动。所有数值数组键都将被修改为从零开始计数,而不会触及文字键。

或者您可以将数组包装到ArrayIterator中并使用seek

$array = array("foo" => "apple", "banana", "cherry", "damson", "elderberry");
$iterator = new ArrayIterator($array);
$iterator->seek(0);
echo $iterator->current(); // apple

如果这也不是一个选项,请使用其他建议之一。