我在PHP中有一个标准的关联数组。获得该数组中最后一个键的最简单方法是什么?在PHP中获取数组的最终密钥
例如:
$foo = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
,我想获得 'KEY3';
我在PHP中有一个标准的关联数组。获得该数组中最后一个键的最简单方法是什么?在PHP中获取数组的最终密钥
例如:
$foo = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
,我想获得 'KEY3';
最快的方法是这样的:
end($foo);
$last = key($foo);
Tesserex的方法是不必要的资源饿的时候,你并不需要所有的键。
$keys = array_keys($foo);
$last = end($keys);
你需要一个实际的变量传递给end
,你不能把其他的功能在里面。
以下是不的简单,但将可能会更幸福处理大(中元素的个数方面,虽然可能会†对于大多数使用更好)阵列比其他答案。
$last_key = key(array_slice($subject, -1, 1, true));
†猜测,对于所有情况下
我倾向于不同意。我在一个有10000个整数值的数组上尝试了所有的三种解决方案,我的解决方案比你的解决方案快了20倍。以秒为单位的结果,以microtime()表示:您的典型时间:0.00013。我的典型时间:0.0000069。 Tesserex的典型时间:0.003。 – 2010-06-11 18:51:05
在小数组(100个整数值)上:您的:0.000015。矿:0.000005。 Tesserex:0.00003 – 2010-06-11 18:54:20
我不打算开始给基准测试结果足够说,我倾向于不同意。无论哪种方式,OP都是在最简单的**之后,我当然不是。 :-) – salathe 2010-06-11 19:06:58
是可能不是真的,那首先给予好评来自我。 – Tesserex 2010-06-11 17:53:23
;-)我甚至找了一些不错的方式来保存内部指针,这样你可以回去后,但找不到任何好办法做到这一点... – 2010-06-11 18:01:59
@Emil好点,我也只是看着我不认为有一种方法可以保存指针状态(没有函数公开'zend_hash_get_pointer'和'zend_hash_set_pointer')。将是一个很好的补充。 – Artefacto 2010-06-11 19:15:47