Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ostatni element tablicy
e-Gandalf
post 18.08.2003, 17:38:47
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 winksmiley.jpg)

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?
Go to the top of the page
+Quote Post
adwol
post 18.08.2003, 23:02:39
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 winksmiley.jpg)

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.
Go to the top of the page
+Quote Post
Omega
post 18.08.2003, 23:12:06
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 >>>
Go to the top of the page
+Quote Post
DeyV
post 18.08.2003, 23:43:15
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 smile.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
e-Gandalf
post 19.08.2003, 13:39:17
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 sad.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 22:30