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获取数组的第一个值(关联或非关联)_Php_Arrays - Fatal编程技术网

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

php获取数组的第一个值(关联或非关联),php,arrays,Php,Arrays,这听起来可能是个愚蠢的问题。如何在不事先知道数组是否关联的情况下获取数组的第一个值 为了得到数组的第一个元素,我想这样做: function Get1stArrayValue($arr) { return current($arr); } 可以吗? 如果在函数调用之前移动数组内部指针,是否会产生问题? 有更好/更聪明/更肥的方法吗 谢谢 更好的方法是使用“将数组的内部指针倒回到第一个元素并返回第一个数组元素的值” 例如: function Get1stArrayValue($arr) { re

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

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

function Get1stArrayValue($arr) { return current($arr); }
可以吗? 如果在函数调用之前移动数组内部指针,是否会产生问题? 有更好/更聪明/更肥的方法吗


谢谢

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

例如:

function Get1stArrayValue($arr) { return reset($arr); }
正如下面的评论所指出的,这个解决方案并不理想,因为它改变了内部指针的状态。但是,我不认为这是一个很大的问题,因为其他功能,例如重置它。
迭代数组时不能使用它的主要问题不是问题,因为
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

要获取任何数组的第一个元素,需要先重置指针。


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

-将数组的第一个值移开并返回,将数组缩短一个元素并向下移动所有元素。所有数字数组键将被修改为从零开始计数,而文字键将不会被触摸

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


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

值得注意的是,因为它回放内部指针,那么如果你在迭代这个数组的中间,就不应该这样做。伟大的YACOBY,因此内部指针不受Frach循环的影响。我想知道如何定义关联数组中的“第一”元素;
function Get1stArrayValue($arr) { 
  return reset($arr); 
}
$array = array("foo" => "apple", "banana", "cherry", "damson", "elderberry");
$iterator = new ArrayIterator($array);
$iterator->seek(0);
echo $iterator->current(); // apple