如果我有一个这样的数组:

$array['foo'] = 400;
$array['bar'] = 'xyz';

我想在不知道键值的情况下从数组中取出第一项,该怎么做呢?有这个函数吗?


当前回答

在获取第一个元素之前,测试变量a是否是一个数组。在动态创建数组时,如果它被设置为null,则会得到一个错误。

例如:

if(is_array($array))
{
  reset($array);
  $first = key($array);
}

其他回答

你可以使用array_shift

有几个选择。Array_shift()将返回第一个元素,但它也将从数组中删除第一个元素。

$first = array_shift($array);

Current()将返回其内部内存指针所指向的数组的值,默认情况下是第一个元素。

$first = current($array);

如果你想确保它指向第一个元素,你总是可以使用reset()。

reset($array);
$first = current($array);

你可以试试这个。

获取数组的第一个值:-

<?php
   $large_array = array('foo' => 'bar', 'hello' => 'world');
   var_dump(current($large_array));
?>

获取数组的第一个键

<?php
   $large_array = array('foo' => 'bar', 'hello' => 'world');
   $large_array_keys = array_keys($large_array);
   var_dump(array_shift($large_array_keys));
?>

从PHP 7.3.0开始,可以不重新设置内部指针。你可以使用array_key_first。如果你确定你的数组有值,那么你可以这样做:

$first = $array[array_key_first($array)];

更有可能的是,你想要处理数组为空的情况:

$first = (empty($array)) ? $default : $array[array_key_first($array)];

这样我们就有了其他选项:reset($arr);如果您不试图保持数组指针在适当的位置,这就足够了,而且对于非常大的数组,它会引起最小的开销。也就是说,它有一些问题:

$arr = array(1,2);
current($arr); // 1
next($arr);    // 2
current($arr); // 2
reset($arr);   // 1
current($arr); // 1 !This was 2 before! We've changed the array's pointer.

在不改变指针的情况下做到这一点的方法:

$arr[reset(array_keys($arr))]; // OR
reset(array_values($arr));

$arr[reset(array_keys($arr))]];它会在数组为空时发出警告。