Piczer Opublikowano 1 Listopada 2010 Udostępnij Opublikowano 1 Listopada 2010 Mam kod: public function offsetUnset( $offset ) { $segments = explode( ".", $offset ); $configPointer = &$this->config; foreach ( $segments as $segment ) $configPointer = &$configPointer[$segment]; } Instrukcja unset( $configPointer ) spowoduje usunięcie referencji, zamiast elementu tablicy na jaki wskazuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Listopada 2010 Administratorzy Udostępnij Opublikowano 1 Listopada 2010 unset($this->config[$segment]) ?? ew. __unset() jezeli to obiekt (bo to mi przypomina też ArrayIterator) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 1 Listopada 2010 Autor Udostępnij Opublikowano 1 Listopada 2010 ArrayAccess jak już. Tych segmentów nie wiadomo ile jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 2 Listopada 2010 Udostępnij Opublikowano 2 Listopada 2010 Barbarzyńsko skuteczne: $a = array( 'b' => array( 'c' => array( 'd' => 'e' ) ) ); $f = &$a; $g = 'b.c.d'; eval( 'unset( $f[\'' . implode( '\'][\'', explode( '.', str_replace( '\'', '\\\'', $g ) ) ) . '\'] );' ); var_dump( $a ); Bardziej ludzkie: $a = array( 'b' => array( 'c' => array( 'd' => 'e' ) ) ); $f = &$a; $g = 'b.c.d'; $h = explode( '.', $g ); $j = array_pop( $h ); foreach ( $h as $i ) $f = &$f[$i]; unset( $f[$j] ); var_dump( $a ); Tłumacząc: uzyskanie referencji do przedostatniego elementu i przez niego unset elementu docelowego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 2 Listopada 2010 Autor Udostępnij Opublikowano 2 Listopada 2010 Ok, dzięki. Działa, chociaż elegancko już nie jest :( Tak jak to kofel mówi: enjoy php. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się