如何获得数组中的最后一个键?

我怎样才能得到一个数组的最后一个键?

解决方法是使用endkey (引用)的组合:

  • 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时反转数组。