3

有没有更好的方法来执行以下操作:

$array = array('test1', 'test2', 'test3', 'test4', 'test5');
// do a bunch of other stuff, probably a loop
$array[] = 'test6';
end($array);
echo key($array); // gives me 6

这将给出最近添加的数组元素的键。

有一个更好的方法吗?

4

4 回答 4

7

你也可以这样做:

$end = end(array_keys($array));

但我认为你的方式清楚地表明了你想要做什么,所以你可以做出如下的事情:

function array_last_key($array) {
    end($array);
    return key($array);
}

就是这样。

于 2008-10-19T05:14:31.587 回答
0

PHP中对此没有特殊功能,因此我认为您的方式是最有效的方式。为了便于阅读,您可能希望将其放在一个名为 array_last_key() 的函数中。

于 2008-10-19T05:15:03.550 回答
0

如果您可以保证您的数组不会有任何非数字键并且您不会删除任何键,那么添加到数组键的最后一个元素将是

$last_added = count($array)-1;

如果您确实需要跟踪最新添加的密钥,您可能需要提出一个方案来提供您自己的保证唯一的密钥。这样,您将始终拥有自生成它以来最新添加的密钥。

$array = array('test1', 'test2', 'test3', 'test4', 'test5');
// do a bunch of other stuff, probably a loop
$new_key = generate_key();
$array[$new_key] = 'test6';
echo $new_key; // gives me blahblahfoobar123
于 2008-10-19T06:12:49.550 回答
0

简单地说没有。end 和 key 都是大 O(1) 时间。任何其他方式都会减慢您的代码速度并增加复杂性。

于 2008-10-20T18:05:35.120 回答