确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:

foreach ($an_array as $key => $val) break;

因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?


当前回答

array_keys返回一个键数组。取第一个条目。或者,您可以调用数组上的reset,然后调用key。后一种方法可能稍微快一点(Thoug我没有测试它),但它有重置内部指针的副作用。

其他回答

如果效率对您来说不是那么重要,您可以在PHP5.4(或更高版本)中使用array_keys($yourArray)[0]。

示例:

# 1
$arr = ["my" => "test", "is" => "best"];    
echo array_keys($arr)[0] . "\r\n"; // prints "my"


# 2
$arr = ["test", "best"];
echo array_keys($arr)[0] . "\r\n"; // prints "0"

# 3
$arr = [1 => "test", 2 => "best"];
echo array_keys($arr)[0] . "\r\n"; // prints "1"

与解决方案相比的优势:

list($firstKey) = array_keys($yourArray);

就是可以将array_keys($arr)[0]作为函数参数传递(即doSomething(array_key($arr)[0],$otherParameter))。

HTH

对我来说最好的方法是

array_shift(array_keys($array))

arraykeys从初始数组中获取关键字数组,然后arrayshift从其第一个元素值中剪切。为此,您需要PHP 5.4+。

这将适用于所有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;
    }
}

这也可能是一个解决方案:

$yourArray = array('first_key'=> 'First', 2, 3, 4, 5);
$first_key = current(array_flip($yourArray));
echo $first_key;

我已经测试过了,而且效果很好。

工作规范。

$myArray = array(
    2 => '3th element',
    4 => 'first element',
    1 => 'second element',
    3 => '4th element'
);
echo min(array_keys($myArray)); // return 1