确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:
foreach ($an_array as $key => $val) break;
因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?
确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:
foreach ($an_array as $key => $val) break;
因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?
当前回答
这将适用于所有PHP版本
$firstKey = '' ;
//$contact7formlist - associative array.
if(function_exists('array_key_first')){
$firstKey = array_key_first($contact7formlist);
}else{
foreach ($contact7formlist as $key => $contact7form ){
$firstKey = $key;
break;
}
}
其他回答
array_keys返回一个键数组。取第一个条目。或者,您可以调用数组上的reset,然后调用key。后一种方法可能稍微快一点(Thoug我没有测试它),但它有重置内部指针的副作用。
这是我找到的最简单的方法。快速且只有两行代码:-D
$keys = array_keys($array);
echo $array[$keys[0]];
array_cchunk将数组拆分为块,可以使用:
$arr = ['uno'=>'one','due'=>'two','tre'=>'three'];
$firstElement = array_chunk($arr,1,true)[0];
var_dump($firstElement);
因为可以使用PHP 7.3.0函数array_key_first()。
有几种方法可以为PHP7.3.0之前的版本提供此功能。可以使用array_keys(),但这可能效率很低。也可以使用reset()和key(),但这可能会更改内部数组指针。一个有效的解决方案,它不改变内部数组指针,写为polyfill:
<?php
if (!function_exists('array_key_first')) {
function array_key_first(array $arr) {
foreach($arr as $key => $unused) {
return $key;
}
return null;
}
}
?>
对于7.3.0之前的@Blixt回答,可以使用此polyfill:
if (!function_exists('array_key_first')) {
function array_key_first(array $array) {
return key(array_slice($array, 0, 1, true));
}
}