array_pop() usuwa go z tablicy. end() zmienia wewnętrzny wskaźnik.Zdobądź ostatni element tablicy bez zmiany tablicy w PHP?
jest jedynym sposobem naprawdę niektóre cludge jak:
$my_array[array_pop(array_keys($my_array))];
?
array_pop() usuwa go z tablicy. end() zmienia wewnętrzny wskaźnik.Zdobądź ostatni element tablicy bez zmiany tablicy w PHP?
jest jedynym sposobem naprawdę niektóre cludge jak:
$my_array[array_pop(array_keys($my_array))];
?
to działa:
list($end) = array_slice($array, -1);
array_slice($array, -1)
zwraca tablicę z tylko ostatniego elementu i list()
przypisuje pierwszy element wyniku plasterek do $end
.
@Alin Purcaru zaproponował ten jeden w komentarzach:
$end = current(array_slice($array, -1));
Od PHP 5.4, to działa zbyt:
array_slice($array, -1)[0]
Co powiedzie się na '$ end = current (array_slice ($ array, -1)); zamiast podejścia' list' dla uzyskania jedynego elementu tablicy? –
tak, miło :) dodane w odpowiedzi – arnaud576875
Fajne dzięki. Miałem nadzieję, że jest jakaś funkcja lub podejście, którego nie znalazłem. – Joren
ERM ... co reset()
ting po użyciu end()
?
$lastItem = end($myArr);
reset($myArr);
ponieważ zmienia on wewnętrzny wskaźnik, a OP wydaje się nie chcieć zmieniać wewnętrznego wskaźnika? :) – arnaud576875
@arnaud Mam świadomość, że resetuje wskaźnik, ale przynajmniej umieszcza go na początku, który jest domyślny. Twoje rozwiązanie byłoby bardziej odpowiednie, aby nie zresetować go w ogóle. –
end($my_array);
widzę nic złego w zmianie wewnętrzny wskaźnik. Nikt nie używa go w tych dniach i tak
Znów z sarkastyczną odpowiedzią bez czytania pytania. Naprawdę powinieneś to zatrzymać. –
wiesz, że to najszybszy problem z pistoletem, lol. nadal nie widzę sensu w pytaniu nawet po przeczytaniu go przez –
@Alin, o co tu chodzi. Mimo późnej fazy gry, jest to poprawna odpowiedź i wskazuje, że jest to niedostatecznie wykorzystana funkcja. –
Niestety
list($end) = array_slice($array, -1);
nie działa z tablic asocjacyjnych. Więc używam
function pop_array_nondestructive($array)
{
return end($array);
}
<?php
/**
* Return last element from array without removing that element from array.
* https://github.com/jdbevan/PHP-Scripts/
*
* @param array $array The array to get the last element from
* @return mixed False if $array is not an array or an empty array, else the key of the last element of the array.
*/
function array_peek($array) {
if (!is_array($array)) return false;
if (count($array)<1) return false;
$last_key = array_pop(array_keys($array));
return $array[$last_key];
}
?>
Aby być uczciwym, co jest na końcu * * jest arbitralny na podstawie kluczy. –