![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 7 Dołączył: 31.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam kod:
Instrukcja unset( $configPointer ) spowoduje usunięcie referencji, zamiast elementu tablicy na jaki wskazuje. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
O ile dobrze się orientuję to referencja jest usuwana w momencie końca życia obiektu.
Tworzy automatycznie referencję do tablicy i każda zmiana w $tab1 powoduje zmianę w $tab2, w związku z tym logiczne jest, że usuwając zmienną $tab1 usuwasz tablicę $tab2(czytaj zwalniasz miejsce w pamięci). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 7 Dołączył: 31.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nawet jeśli referencja do tablicy tworzona jest bez użycia operatora wyłuskania (&), to założę się, że już do jej elementów tworzone będą kopie, zamiast referencji, więc mimo to jestem w kropce.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Logiczne jest, że jeżeli $x jest referencją $y to $x wskazuje na miejsce w pamięci zajmowane przez $y. Jeżeli usuniesz miejsce w pamięci na które wskazuje $x usuniesz zmienną $y, ponieważ obie 'zmienne' korzystają z tego samego miejsca w pamięci.
EDIT: W ogóle nie rozumiem jaki masz cel w kodzie tworząc referencję referencji(linia 4 i 6 na moje oko wskazują na to samo)
Ten post edytował lDoran 2.11.2010, 14:18:33 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 7 Dołączył: 31.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli jest kod:
$x = &$y; To chcę usunąć wartość zmiennej $x mając do dyspozycji tylko $y. Co chcę uzyskać? W klasie mam postrzępioną tablicę i chcę się do niej odwoływać przez: $config["klucz1.klucz2.klucz3"], gdzie $config przechowuje obiekt implementujący ArrayAccess. |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Instrukcja unset( $configPointer ) spowoduje usunięcie referencji, zamiast elementu tablicy na jaki wskazuje. Teoretycznie, nieistniejąca zmienna, to jest - innymi słowy - null. unsetem kasujesz referencję. PHP, niestety, nie ma operatora, który by pozwolił uzyskanie bezpośredniego adresu do zmiennej, na którą wskazuje referencja. Ale czemu by nie ustawić jej na null? (IMG:style_emoticons/default/winksmiley.jpg) Też będzie zachowywać się jak usunięta, patrząc do dokumentacji dla isset: Cytat isset() will return FALSE if testing a variable that has been set to NULL Czyli wydaje mi się, że moje myślenie jest prawidłowe. [; |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 7 Dołączył: 31.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Miałem taki pomysł, a potem wywalać puste elementy, ale ostatecznie skorzystałem z eval(). Dzięki wszystkim za fatygę.
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 7 Dołączył: 31.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zamieniam klucz1.klucz2.klucz3 na [klucz1][klucz2][klucz3] i doczepiam do zmiennej.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:32 |