Каков наилучший метод получения ключа последнего добавленного элемента массива в PHP? - PullRequest
3 голосов
/ 19 октября 2008

Есть ли лучший способ сделать следующее:

$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 ]

7 голосов
/ 19 октября 2008

Вы также можете сделать:

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

Но я думаю, что ваш путь проясняет, что вы хотите сделать, так что вы могли бы поднять что-то вроде:

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

Вот и все.

0 голосов
/ 20 октября 2008

Проще говоря, нет. И конец, и ключ - время Big O (1). Любой другой способ замедляет ваш код и добавляет сложности.

0 голосов
/ 19 октября 2008

Если вы можете гарантировать, что в вашем массиве не будет никаких нечисловых ключей и что вы не собираетесь удалять какие-либо ключи, то последний элемент, добавленный к ключу вашего массива, будет

$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
0 голосов
/ 19 октября 2008

Специальной функции для этого в PHP нет, поэтому я думаю, что ваш путь - самый эффективный способ сделать это. Для удобства чтения вы можете поместить его в функцию, называемую что-то вроде array_last_key ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...