这可能听起来像个愚蠢的问题。如果不预先知道数组是否是关联数组,如何获取数组的第一个值?
为了获取数组的第一个元素,我想要这样做:
function Get1stArrayValue($arr) { return current($arr); }
这样做是否可行?如果在函数调用之前移动数组内部指针,会不会出现问题?有没有更好/更聪明/更快的方法?
谢谢!
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
要获取任何数组的第一个元素,您需要先重置指针。 http://ca3.php.net/reset
function Get1stArrayValue($arr) {
return reset($arr);
}
如果您不介意从数组中丢失第一个元素,您也可以使用
array_shift()
- 将数组的第一个值移出并返回它,缩短数组一个元素并将所有内容向下移动。所有数字数组键都将被修改为从零开始计数,而文字键则不会被修改。
或者您可以将数组包装到ArrayIterator中并使用seek
:
$array = array("foo" => "apple", "banana", "cherry", "damson", "elderberry");
$iterator = new ArrayIterator($array);
$iterator->seek(0);
echo $iterator->current(); // apple