在PHP中返回关联数组的第一个键

我试图获取关联数组的第一个键,而不通过array_keys()或类似方法创建临时变量,以通过引用传递。 不幸的是, reset()array_shift()通过引用获取数组参数,所以它们都不是可行的结果。

用PHP 5.4我会在天堂; array_keys($array)[0]; ,但不幸的是,这当然也不是一种选择。

我可以创建一个函数来实现这个目的,但是我只能想象有一些PHP的array_*函数会在单个语句中产生所需的结果 ,这是我无法想象或想出来的。

所以:

$array = array('foo' => 'bar', 'hello' => 'world');

$firstKey = assorted_functions($array); // $firstKey = 'foo'

在我的问题中“无参考”条款的原因仅仅是因为我认为array_keys()将是必需的(如果通过引用传递的方式,请将其解除)

我会使用key() ,但是这需要一个reset()因为我不确定在这个操作时指针的位置。


附录

我正在跟进我最近的一个想法:正如我在评论中提到的那样,它会使用所有相同的内存,所以如果这是一个问题,这个问题没有解决方案。

$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)

我知道这一点,因为PHP没有这样的优化功能,但认为它值得明确提及。

接受答案的简洁性虽然不错,但如果你使用的是合理大小的数组,那么这种方法就可以工作。


尽管array_shift(array_keys($array)); 将工作, current(array_keys($array)); 速度更快,因为它不会提高内部指针。

任何一个都可以工作。

更新

正如@TomcatExodus指出的那样, array_shift(); 期望通过引用传递数组,所以第一个示例将发出错误。 最好坚持current();


您可以使用重置和密钥:

reset( $array );
$first_key = key( $array );

或者,您可以使用一个功能:

function firstIndex($a) { foreach ($a as $k => $v) return $k; }
$key = firstIndex( $array );

array_shift(array_keys($array))
链接地址: http://www.djcxy.com/p/30121.html

上一篇: Return first key of associative array in PHP

下一篇: delete item in an array of arrays