2011-09-20 14 views

Odpowiedz

21

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] 
+4

Co powiedzie się na '$ end = current (array_slice ($ array, -1)); zamiast podejścia' list' dla uzyskania jedynego elementu tablicy? –

+0

tak, miło :) dodane w odpowiedzi – arnaud576875

+0

Fajne dzięki. Miałem nadzieję, że jest jakaś funkcja lub podejście, którego nie znalazłem. – Joren

2

ERM ... co reset()ting po użyciu end()?

$lastItem = end($myArr); 
reset($myArr); 
+1

ponieważ zmienia on wewnętrzny wskaźnik, a OP wydaje się nie chcieć zmieniać wewnętrznego wskaźnika? :) – arnaud576875

+0

@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. –

-4
end($my_array); 

widzę nic złego w zmianie wewnętrzny wskaźnik. Nikt nie używa go w tych dniach i tak

+6

Znów z sarkastyczną odpowiedzią bez czytania pytania. Naprawdę powinieneś to zatrzymać. –

+0

wiesz, że to najszybszy problem z pistoletem, lol. nadal nie widzę sensu w pytaniu nawet po przeczytaniu go przez –

+0

@Alin, o co tu chodzi. Mimo późnej fazy gry, jest to poprawna odpowiedź i wskazuje, że jest to niedostatecznie wykorzystana funkcja. –

0

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); 
    } 
0
<?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]; 
} 
?> 
Powiązane problemy