2010-06-11 23 views
5

我在PHP中有一个标准的关联数组。获得该数组中最后一个键的最简单方法是什么?在PHP中获取数组的最终密钥

例如:

$foo = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3'); 

,我想获得 'KEY3';

回答

9

最快的方法是这样的:

end($foo); 
$last = key($foo); 

Tesserex的方法是不必要的资源饿的时候,你并不需要所有的键。

+1

是可能不是真的,那首先给予好评来自我。 – Tesserex 2010-06-11 17:53:23

+0

;-)我甚至找了一些不错的方式来保存内部指针,这样你可以回去后,但找不到任何好办法做到这一点... – 2010-06-11 18:01:59

+0

@Emil好点,我也只是看着我不认为有一种方法可以保存指针状态(没有函数公开'zend_hash_get_pointer'和'zend_hash_set_pointer')。将是一个很好的补充。 – Artefacto 2010-06-11 19:15:47

8
$keys = array_keys($foo); 
$last = end($keys); 

你需要一个实际的变量传递给end,你不能把其他的功能在里面。

1

以下是简单,但可能会更幸福处理大(中元素的个数方面,虽然可能会对于大多数使用更好)阵列比其他答案。

$last_key = key(array_slice($subject, -1, 1, true)); 

猜测,对于所有情况下

+0

我倾向于不同意。我在一个有10000个整数值的数组上尝试了所有的三种解决方案,我的解决方案比你的解决方案快了20倍。以秒为单位的结果,以microtime()表示:您的典型时间:0.00013。我的典型时间:0.0000069。 Tesserex的典型时间:0.003。 – 2010-06-11 18:51:05

+0

在小数组(100个整数值)上:您的:0.000015。矿:0.000005。 Tesserex:0.00003 – 2010-06-11 18:54:20

+0

我不打算开始给基准测试结果足够说,我倾向于不同意。无论哪种方式,OP都是在最简单的**之后,我当然不是。 :-) – salathe 2010-06-11 19:06:58