$value = reset($arr);
$key = key($arr);
(按顺序)
见reset()PHP Manual,
key()PHP Manual.
unset($arr[$key]); # in case you want to remove it.
但是array_pop()PHP Manual 正在使用最后一个元素:
$value = end($arr);
$key = key($arr);
unset($arr[$key]); # in case you want to remove it.
见end()PHP Manual。
为了好玩:
list($value, $key) = array(end($arr), key($arr));
或
extract(array('value'=>end($arr), 'key'=>key($arr)));
或
end($arr);
list($key, $value) = each($arr);
或任何你喜欢的游戏风格;)
处理空数组
目前还缺少处理空数组的方法。所以需要检查是否有最后一个(第一个)元素,如果没有,将$key 设置为null(因为null 不能是数组键):
for($key=null;$key===null&&false!==$value=end($arr);)
unset($arr[$key=key($arr)]);
这将提供像$arr = array('first' => '1st', 'last' => '2nd.');这样的填充数组:
string(4) "2nd." # value
string(4) "last" # key
array(1) { # leftover array
["first"]=>
string(3) "1st"
}
还有一个空数组:
bool(false) # value
NULL # key
array(0) { # leftover array
}
害怕使用 unset?
如果您不相信 unset() 具有您需要的性能(我认为这不是一个真正的问题,尽管我没有运行任何指标),您可以使用本机 array_pop() 实现也一样(但我真的认为unset() 作为一种语言结构可能会更快):
end($arr);
$key = key($arr);
$value = array_pop($arr);