![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 195 Pomógł: 0 Dołączył: 7.07.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy to na Pro, ale chyba tak (jesli sie myle to DeyV z pewnoscia poprawi
![]() Jak odwolac sie do ostatniego elementu tablicy? Pytanie z pozoru proste, w php nie ma ladnego sposobu, ale mozna przeciez: $array[count($array)-1] ... Tylko, ze to nie jest dobra metoda :/ Moj problem polega na tym, ze otrzymuje tablice i nie mam pojecia co w niej jest. Moim zadaniem jest dodac cos na koniec a potem (!!!) operowac na tym i oddac na koniec tablice, czyli: [php:1:dda4f3b182]<?php function &dodaj (&$array,$add) { $array[] = Array(); foreach($add as $k=>$v) { $array[count($array)-1][$k] = $v; } } ?>[/php:1:dda4f3b182] Problem w tym, ze powyzszy kod np. wysypie sie w sytuacji gdy $array ma na wejsciu wartosc $array=Array('nazwa'=>1); ... czy jest jakis sposob aby zlapac referencje do ostatniego elementu tablicy? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie wiem czy to na Pro, ale chyba tak (jesli sie myle to DeyV z pewnoscia poprawi
![]() Jak odwolac sie do ostatniego elementu tablicy? Pytanie z pozoru proste, w php nie ma ladnego sposobu, ale mozna przeciez: $array[count($array)-1] ... Tylko, ze to nie jest dobra metoda :/ Moj problem polega na tym, ze otrzymuje tablice i nie mam pojecia co w niej jest. Moim zadaniem jest dodac cos na koniec a potem (!!!) operowac na tym i oddac na koniec tablice, czyli: Tu niestety objawia się pewna niedogodność phpowych tablic, której np. nie ma w perlu -- mieszanie tablic zwykłych indeksowanych liczbami naturalnymi (list) i asocjacyjnych (haszy). Po pierwsze indeksowanie skalarem troche samo w sobie przeczy pojęciu ostatni element. Po prostu w tym przypadku tablica jest zbiorem par typu klucz => wartość i tyle. php jednak wewnętrznie trzyma takie tablice i tak uporządkowane. Można się do tej kolejności dobrać funkcjami array_keys() i array_values(). Najprościej jest więc wyciągnąć sobie ostatni wpisany klucz z tablicy i skojarzoną z nim wartość [php:1:48c3275503]<?php array_pop(array_keys($array)) ?>[/php:1:48c3275503] Jest to rozwiązanie uniwersalne, choć w przypadku tablic liniowych trochę przesadzone. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 273 Pomógł: 0 Dołączył: 5.05.2003 Skąd: Mazury Ostrzeżenie: (0%) ![]() ![]() |
Można to robić odwracając tablicę. Czyli zeby otrzymac ostatni element:
[php:1:a9aad0bc88]<?php function odczytaj($tablica){//odczytuje element na koncu tablicy $tablica = array_reverse($tablica); return $tablica[0]; } function dodaj($element, &$tablica) {//dodaje element na koncu tablicy $tablica[] = $element } function zamien($element, &$tablica){//aktualizuje ostatni element tablicy $tablica = array_reverse($tablica); $tablica[0] = $element; $tablica = array_reverse($tablica); } ?>[/php:1:a9aad0bc88] Nie wiem tylko na ile wydajne jest takie rozwiązanie... -------------------- <<< EB >>>
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Jednak to forum będzie najlepsze
![]() -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 195 Pomógł: 0 Dołączył: 7.07.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Omega - To zadziala tylko jesli tablica sklada sie z indeksow numerycznych...
adwol: dokladnie nad czyms takim kombinowalem, array_pop jest tu wygodny, z tym, ze ja szukalem raczej po sciezce: [php:1:0b80457cb6]<?php $x=array_pop($array); $x=Array('aa'); array[]=$x; // albo array_push ?>[/php:1:0b80457cb6] Bo w Twoim wypadku trace cala strukture, a tego nie moge zrobic ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 22:30 |