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

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

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


当前回答

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

其他回答

key($an_array)将为您提供第一个密钥

edit-per-Blixt:您应该调用reset($array);before键($anarray)将指针重置到数组的开头。

这是我找到的最简单的方法。快速且只有两行代码:-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);

今天,我必须搜索POST请求返回的数组的第一个密钥。(并注意表单id等的编号)

我发现了这个:返回PHP中关联数组的第一个键

http://php.net/key

我已经做到了,而且很有效。

    $data = $request->request->all();
    dump($data);
    while ($test = current($data)) {
        dump($test);
        echo key($data).'<br />';die();
        break;
    }

也许会比其他人节省15分钟。CYA。

如果效率对您来说不是那么重要,您可以在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