Ответ 1
попробуйте использовать
end($array);
У меня есть массив, который структурирован следующим образом:
[33] => Array
(
[time] => 1285571561
[user] => test0
)
[34] => Array
(
[time] => 1285571659
[user] => test1
)
[35] => Array
(
[time] => 1285571682
[user] => test2
)
Как я могу получить последнее значение в массиве, но поддерживая индекс [35]?
Результат, который я ищу, таков:
[35] => Array
(
[time] => 1285571682
[user] => test2
)
попробуйте использовать
end($array);
$last = array_slice($array, -1, 1, true);
Подробнее о том, что означают аргументы, см. http://php.net/array_slice.
P.S. В отличие от других ответов, этот фактически делает то, что вы хотите.: -)
Вы можете использовать end
для продвижения внутреннего указателя до конца или array_slice
, чтобы получить массив, содержащий только последний элемент:
$last = end($arr);
$last = current(array_slice($arr, -1));
Если у вас есть массив
$last_element = array_pop(array);
Пример 1:
$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
print_r(end($arr));
Вывод= e
Пример 2:
ARRAY без ключей.
$arr = array("a", "b", "c", "d", "e");
print_r(array_slice($arr, -1, 1, true));
// output is = array( [4] => e )
Пример 3:
ARRAY с ключом (ами)
$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
print_r(array_slice($arr, -1, 1, true));
// output is = array ( [lastkey] => e )
Пример 4:
Если ваши ключи массива, такие как: [0] [1] [2] [3] [4]... и т.д. Вы можете использовать это:
$arr = array("a","b","c","d","e");
$lastindex = count($arr)-1;
print_r($lastindex);
Вывод= 4
Пример 5: Но если вы не уверены!
$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
$ar_k = array_keys($arr);
$lastindex = $ar_k [ count($ar_k) - 1 ];
print_r($lastindex);
Вывод= lastkey
Как сказал Гумбо,
<?php
$fruits = array('apple', 'banana', 'cranberry');
echo end($fruits); // cranberry
?>
Еще одно холодное решение:
$value = $arr[count($arr) - 1];
Вышеуказанное будет подсчитывать количество значений массива, вычитать 1 и затем вернуть значение.
Примечание. Это можно использовать, только если ваши ключи массива являются числовыми.
Поскольку ключ нужен, принятое решение не работает.
Это:
end($array);
return array(key($array) => array_pop($array));
вернется точно в качестве примера в вопросе.
"SPL-way"
:
$splArray = SplFixedArray::fromArray($array);
$last_item_with_preserved_index[$splArray->getSize()-1] = $splArray->offsetGet($splArray->getSize()-1);
Подробнее о SplFixedArray
и о том, почему он в некоторых случаях (особенно с массивными данными больших индексов) предпочтительнее, чем базовый array
, здесь => Класс SplFixedArray.