Dan*_*ugg 36 php arrays associative-array key
我试图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'
Run Code Online (Sandbox Code Playgroud)
在我的问题中"无参考"条款的原因只是因为我认为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)
Run Code Online (Sandbox Code Playgroud)
我知道这一点,因为PHP没有这样的优化功能,但认为有必要明确提及.
接受的答案的简洁性很好,如果你正在使用合理大小的数组,那么它们就可以工作了.
adl*_*son 63
虽然array_shift(array_keys($array));可以工作,但current(array_keys($array));速度更快,因为它不会推进内部指针.
任何一个都可以工作.
正如@TomcatExodus所指出的那样,array_shift();期望通过引用传递数组,因此第一个示例将发出错误.最好坚持下去current();
Bri*_*ham 18
reset( $array );
$first_key = key( $array );
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用一个功能:
function firstIndex($a) { foreach ($a as $k => $v) return $k; }
$key = firstIndex( $array );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75324 次 |
| 最近记录: |