我有一个数组:

阵列(4 = > '苹果',7 = >“橙色”,13 = >“李子”)

我想要得到这个数组的第一个元素。预期结果:串苹果

一个要求:它不能通过引用传递来完成,所以array_shift不是一个好的解决方案。

我该怎么做呢?


当前回答

我不喜欢摆弄数组的内部指针,但是用array_keys()或array_values()构建第二个数组也很低效,所以我通常定义这个:

function array_first(array $f) {
    foreach ($f as $v) {
        return $v;
    }
    throw new Exception('array was empty');
}

其他回答

一些数组不能与list、reset或current等函数一起使用。也许它们是“人造”数组——例如,部分实现了ArrayIterator。

如果你想拉出第一个值而不考虑数组,你可以短路迭代器:

foreach($array_with_unknown_keys as $value) break;

然后你的值将在$value中可用,循环将在第一次迭代后中断。这比将一个潜在的大数组复制到array_unshift(array_values($arr))这样的函数更有效。

你也可以用这种方式获取钥匙:

foreach($array_with_unknown_keys as $key=>$value) break;

如果你从函数中调用这个函数,只要提前返回:

function grab_first($arr) {
    foreach($arr as $value) return $value;
}

对Sarfraz发布的内容做了一个小改动:

$array = array(1, 2, 3, 4, 5);
$output = array_slice($array, 0, 1);
print_r ($output);

正如Mike指出的(最简单的方法):

$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // Echoes "apple"

如果你想获取密钥:(重置后执行)

echo key($arr); // Echoes "4"

来自PHP的文档:

混合重置(数组|对象和$array);

描述:

reset()返回数组的内部指针指向第一个元素并返回第一个元素的值,如果数组为 空的。

我认为使用array_values是最好的选择。你可以从函数的结果中返回下标0处的值,得到'apple'。

你可以通过下面的代码获取第一个元素:

$array_key_set = array_keys($array);
$first_element = $array[$array_key_set[0]];

或者使用:

$i=0;
foreach($array as $arr)
{
  if($i==0)
  {
    $first_element=$arr;
    break;
  }
 $i++;
}
echo $first_element;