在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