如何获得数组中的最后一个键?
我怎样才能得到一个数组的最后一个键?
解决方法是使用end
和key
(引用)的组合:
-
end()
将数组的内部指针提前到最后一个元素,并返回它的值。 -
key()
返回当前数组位置的索引元素。
所以,像这样的代码的一部分应该做的伎俩:
$array = array( 'first' => 123, 'second' => 456, 'last' => 789, ); end($array); // move the internal pointer to the end of the array $key = key($array); // fetches the key of the element pointed to by the internal pointer var_dump($key);
会输出:
string 'last' (length=4)
即我的数组的最后一个元素的关键。
尽pipeend()
似乎是最简单的,但并不是最快的。
更快,更强大的select是array_slice()
编辑罢工:这一说法没有得到证实,在评论中提到了相反的证据。 如果这张海报关于速度/效率的断言有任何事实可言,那么必须提供基准testing。
$last_key = key( array_slice( $array, -1, 1, TRUE ) );
我更喜欢
end(array_keys($myarr))
只需使用: echo $array[count($array) - 1];
不知道这是否会更快,但这样做似乎更容易,并通过不传递函数end()来避免错误…
它只是需要一个variables…没有什么大不了,再写一行代码,然后如果需要的话就取消设置。
$array = array( 'first' => 123, 'second' => 456, 'last' => 789, ); $keys = array_keys($array); $last = end($keys);
尝试使用array_pop和array_keys函数,如下所示:
<?php $array = array( 'one' => 1, 'two' => 2, 'three' => 3 ); echo array_pop(array_keys($array)); // prints three ?>
我也想提供一个解决这个问题的方法。
假设所有的键都是数字,没有任何间隙,我首选的方法是数组,然后从该值减1(以说明数组键从0开始的事实。
$array = array(0=>'dog', 1=>'cat'); $lastKey = count($array)-1; $lastKeyValue = $array[$lastKey]; var_dump($lastKey); print_r($lastKeyValue);
这会给你:
int(1)cat
你可以使用这个:
$array = array("one" => "apple", "two" => "orange", "three" => "pear"); end($array); echo key($array);
另一个解决scheme是创build一个函数并使用它:
function endKey($array){ end($array); return key($array); } $array = array("one" => "apple", "two" => "orange", "three" => "pear"); echo endKey($array);
我只是从Xander那里获得了帮助函数,并在之前的答案中改进了它:
function last($array){ $keys = array_keys($array); return end($keys); } $arr = array("one" => "apple", "two" => "orange", "three" => "pear"); echo last($arr); echo $arr(last($arr));
$arr = array('key1'=>'value1','key2'=>'value2','key3'=>'value3'); list($last_key) = each(array_reverse($arr)); print $last_key; // key3
$array = array( 'something' => array(1,2,3), 'somethingelse' => array(1,2,3,4) ); $last_value = end($array); $last_key = key($array); // 'somethingelse'
这是可行的,因为PHP在$ array内部移动了它的数组指针
喜欢这个:
$keys = array_keys($array); $lastKey = $keys[sizeof($array)-1];
应该是这样的…
$latest_kid = end(array_reverse(array_keys($my_array)));
导致它在我们调用array_keys时反转数组。