2010-02-04 11 views
8
$arr[] = $new_item; 

Czy możliwe jest programowe pobranie nowego obiektu?Jak zdobyć klucz numeryczny nowego pchanego elementu w PHP?

Zauważ, że nie jest to konieczne count($arr)-1:

$arr[1]=2; 
$arr[] = $new_item; 

W powyższym przypadku, to 2

+0

Edit: Zignoruj ​​mnie, odczytując pytanie. Pushed, który element interaktywny? Przycisk, przycisk radiowy, pola wyboru lub ...? – Extrakun

+0

Odpowiedzi Bryana i Haima działają ... jednak częściej, gdy ktoś zadaje takie pytanie, tak naprawdę nie dbają o ostatni klucz tablicy, naprawdę chcą ostatniego elementu w tablicy. Jeśli tak jest, po prostu użyj funkcji 'end()' i nie martw się o jej klucz. – philfreo

Odpowiedz

9

end() wykonać zadanie, aby zwrócić wartość,

jeśli to pomoże,

można użyć key() po naciśnięciu klawisza.

po napisałem odpowiedź, widzę funkcji w ten link:

http://www.php.net/manual/en/function.end.php

function endKey($array){ 
end($array); 
return key($array); 
} 
+0

Nie sądzę, że to zadziała.Z dokumentacji PHP: "Każda tablica ma wewnętrzny wskaźnik do swojego" bieżącego "elementu, który jest inicjowany do pierwszego elementu wstawionego do tablicy." Możliwe, że 'end()' może wykonać zadanie – rossipedia

+1

Naprawię to, masz rację, jego koniec() –

0

Można użyć zmiennej aby śledzić liczbę elementów w tablicy:

$i = 0; 
$foo = array(); 
$foo[++$i] = "hello"; 
$foo[++$i] = "world"; 

echo "Elements in array: $i" . PHP_EOL; 
echo var_dump($foo); 
+0

To spowoduje nadpisanie istniejących kluczy, a jeśli nie ma żadnych ofert, nie ma żadnej korzyści, po prostu używając '$ foo []', z wyjątkiem tworzenie jednopokoleniowej macierzy (która może być lub nie być korzyścią). – Duncan

1

Możesz spróbować:

max(array_keys($array,$new_item)) 

array_keys($array,$new_item) zwróci wszystkie klucze powiązane z wartością $new_item, jako tablicę.

Wszystkich tych kluczy interesuje ten, który został dodany jako ostatni i będzie miał wartość max.

+0

dobre połączenie z '$ new_item' tam, dzięki)) –

0

jeśli jest nowo utworzony, prawdopodobnie powinieneś zachować odniesienie do elementu. :)

Można użyć array_reverse coś takiego:

$arr[] = $new_item; 
... 
$temp = array_reverse($arr); 
$new_item = $temp[0]; 

Albo można to zrobić:

$arr[] = $new_item; 
... 
$new_item = array_pop($arr); 
$arr[] = $new_item; 

Jeśli używasz tablicę jako stos, który wydaje się, że jesteś powinieneś unikać mieszania w klawiszach asocjacyjnych. Obejmuje to ustawienie $arr[$n] gdzie $n > count($arr). Trzymaj się za pomocą funkcji array_* do manipulacji i jeśli musisz używać indeksów, rób to tylko jeśli 0 < $n < count($arr). W ten sposób indeksy powinny pozostać uporządkowane i sekwencyjne, a następnie można polegać na $arr[count($arr)-1], aby było poprawne (jeśli nie, masz błąd logiczny).

2

Najbezpieczniejszy sposób to zrobić to:

$newKey = array_push($array, $newItem) - 1; 
+0

Wygląda na to, że zadziała. Ale nie "czuje" się dobrze. Czy coś mi umyka? – Achshar

+0

To najczystsze z dotychczasowych rozwiązań. –

Powiązane problemy