Как получить числовой ключ нового отправляемого элемента в PHP? - PullRequest
8 голосов
/ 04 февраля 2010
$arr[] = $new_item;

Можно ли программным образом получить вновь добавленный элемент?

Обратите внимание, что в этом нет необходимости count($arr)-1:

$arr[1]=2;
$arr[] = $new_item;

В приведенном выше случае это 2

Ответы [ 6 ]

11 голосов
/ 04 февраля 2010

end() сделайте работу, чтобы вернуть значение,

, если это поможет вам,

, вы можете использовать key() после, чтобы набрать ключ.

после того как я написал ответ, я вижу функцию в этой ссылке:

http://www.php.net/manual/en/function.end.php

function endKey($array){
 end($array);
 return key($array);
}
6 голосов
/ 04 февраля 2010

max(array_keys($array)) должен сделать трюк

2 голосов
/ 07 апреля 2014

Самый безопасный способ сделать это:

$newKey = array_push($array, $newItem) - 1;
1 голос
/ 04 февраля 2010

Вы можете попробовать:

max(array_keys($array,$new_item))

array_keys($array,$new_item) вернет все ключи, связанные со значением $new_item, в виде массива.

Из всех этих ключей нас интересует тот, который был добавлен последним и будет иметь значение max.

0 голосов
/ 04 февраля 2010

если он только что создан, вам, вероятно, следует сохранить ссылку на элемент. :)

Вы можете использовать array_reverse, например:

$arr[] = $new_item;
...
$temp = array_reverse($arr);
$new_item = $temp[0];

Или вы можете сделать это:

$arr[] = $new_item;
...
$new_item = array_pop($arr);
$arr[] = $new_item;

Если вы используете массив в качестве стека, как вам кажется, вам следует избегать смешивания в ассоциативных ключах. Это включает в себя настройку $arr[$n], где $n > count($arr). Придерживайтесь использования array_* функций для манипуляции, и если вы должны использовать индексы, делайте это только если 0 < $n < count($arr). Таким образом, индексы должны оставаться упорядоченными и последовательными, и тогда вы можете положиться на $arr[count($arr)-1], чтобы быть корректным (если это не так, у вас есть логическая ошибка).

0 голосов
/ 04 февраля 2010

Вы можете использовать переменную для отслеживания количества элементов в массиве:

$i = 0;
$foo = array();
$foo[++$i] = "hello";
$foo[++$i] = "world";

echo "Elements in array: $i" . PHP_EOL;
echo var_dump($foo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...