Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie ostatniego elementu tablicy
Forum PHP.pl > Forum > PHP
Asmox
Szukam funkcji, która pobrałaby ostatni element tablicy bez usuwania go, tak jak to robi array_pop. Niestety nie znalazłem jej, a w komentarzach do array_pop znalazłem tylko funkcję podobną, którą mógłbym przerobić na własny użytek:
Cytat
sneskid at hotmail dot com 03-Aug-2009 07:22
As already mentioned, array_pop always returns a copy, never a reference, which can be a problem in some cases.
Here is a pop function that allows you to get the reference.
(keep in mind it will alter the internal pointer of the array)

  1. function &array_rpop(&$a){
  2. end($a);
  3. $k=key($a);
  4. $v=&$a[$k];
  5. unset($a[$k]);
  6. return $v;
  7. }
  8.  
  9. // try this:
  10. $A='A';
  11. $B=array(&$A);
  12.  
  13. //$C=&array_rpop($B); // will work
  14. $C=&array_pop($B); // won't work
  15.  
  16. $C='C';
  17.  
  18. var_dump($A,$B,$C);

Cytat
I hope the PHP people will make the regular function work with references.

Pomyślałem żeby zrobić u siebie implementację takiej funkcji ale nie wiem, czy jest to najbardziej wydajne rozwiązanie? Czy może bardziej opłaca się zrobić coś w stylu poniższego kodu?
  1. $originalArr = array('raz', 'dwa', 'trzy');
  2. $copiedArr = $originalArr;
  3. $lastElement = array_pop($copiedArr);
k_@_m_i_l
  1. $array = array(1,2,3,4,5);
  2. $last = $array[count($array)-1];
!*!
A end nie może być?
diabel
  1. <?php
  2. $tablica = array('jeden' => 1, 'dwa' => 2);
  3.  
  4. end($tablica);
  5. $indeks = key($a);
  6. $wartosc = &$a[$k];
  7. reset($a);
  8. ?>


W ten sposob przechodzisz na koniec tablicy wyciagasz interesujace Cie parametry(indeks i wartosc) i wracasz an poczatek tablicy
lukaskolista
Cos Ci diabel nie wyszlo. Sprawdz swoj skrypt zanim go wyslesz. Poza tym da sie prosciej:
  1. $arr = array(0, 1, 2, 3);
  2. $end = end($arr);
  3. reset($arr);
  4.  
  5. echo $end;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.