![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
piszę sobie klasę, do generowania drzewek, ale mam problem. Mam funkcję, która wyszukuje mi rodziców. np: Rodzic <- dziecko <- młodsze dziecko chcę z takiej hierarchii utworzyć tablice. $arr['rodzic']['dziecko']['mlodsze dziecko'] = array(). Funkcja zwraca mi moją hierarchię gotową, by wpleść ją w tablice
bez [ oraz ] wszystko fajnie, ale jak mogę z tego zrobić tablicę? eval!
i co? błąd! kohany wyjątek Cytat ErrorException [ Recoverable Error ]: Object of class Trees could not be converted to string ze wskazaniem na eval jeśli dam na sztywno [/php] to dalej widzę błąd, lecz bez eval - błąd znika :| |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 3 Dołączył: 17.05.2004 Skąd: Nowhere Land Ostrzeżenie: (0%) ![]() ![]() |
eval()? Naprawdę nie widzisz żadnego innego sposobu? Żadnego? Jeżeli już korzystasz z obiektowości warto byłoby mieć rozwiązanie, które nie korzysta z eval. Eval to zło.
Jeżeli chodzi o odpowiedź stricte na Twoje pytanie - parser mówi Ci, że nie może przekonwertować obiektu do stringa - ale nie masz tam konwersji obiektu.. prawda? Może jednak masz? "$this -> blabla()" spójrz w dokumentację, może jedna trzeba użyć nawiasów klamrowych (dokumentacja). BTW, w przykładzie, który podałeś na końcu, brakuje jednego nawiasu ' po "młodsze dziecko". -------------------- Google prawdę mówi, względów się wyrzeka...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
próbowałem używać nawiasów klamrowych, lecz nie pomogło.
Cytat BTW, w przykładzie, który podałeś na końcu, brakuje jednego nawiasu ' po "młodsze dziecko". parser ipb usunął, nie wiedzieć czemu? nie mam pomysłu jakby można to inaczej obsłużyć :/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 3 Dołączył: 17.05.2004 Skąd: Nowhere Land Ostrzeżenie: (0%) ![]() ![]() |
Gdzieś to menu masz zdefiniowane. Gdzieś ten string jest generowany. Dlaczego, zamiast generować stringa nie utworzysz od razu tej tablicy? Trochę nie rozumiem tej koncepcji i dlatego ciężko jest cokolwiek pomóc. Aczkolwiek wiem jedno - można to zrobić na pewno i to bez użycia eval. Chociażby zamiast stringa zwracając tablicę z trzema elementami i zrobić list($rodzic, $dziecko, $ml_dziecko) = $this->getParents(), a następnie $this->struktura[$rodzic][$dziecko][$ml_dziecko] = array();. Nie używaj eval(), w ogóle
![]() -------------------- Google prawdę mówi, względów się wyrzeka...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
to czym piszesz nie ma sensu, jeżeli dla będzie 10 poziomow, to co?
moja koncepcja ma generować sama tablie wielopoziomową... tylko eval mi na myśl przychodzi. Ten post edytował PiotrekM 25.04.2011, 22:45:42 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
http://kohanaframework.org/3.0/guide/api/Arr#path
A taki kod sobie napisałem przed wielu laty:
Może to nie są perfekcyjne rozwiązania, ale jak widać można się dostać do dowolnego elementu tablicy bez eval. W sumie teraz średnio mi się to podoba i bym to zrobił inaczej, ale działać - działa. -------------------- rm -rf /*
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
problem w tym, że ja nie chce odszukać, tylko utworzyć klucz :/
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
To żadna różnica. Jak umiesz znaleźć, to i umiesz utworzyć. Moja metoda, o ile pamiętam, robi i jedno i drugie. Chyba coś takiego:
Zupełnie bez sensu, muszę to przepisać ![]() -------------------- rm -rf /*
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pytanie... Czy w tym drzewku może dziecko mieć wielu rodziców czy tylko jednego? Poza tym skoro się interpreter burzy, że nie może stworzyć z obiektu stringa, to czemu nie użyjesz magii w tym wypadku? __toString()
![]() 1. $arr[] = array(); 2. Sprawdzamy czy mamy potomka. Jeśli nie to zwrot tablicy. 3. Jeśli tak to tworzymy w rodzicu element o nazwie dziecka i przypisujemy mu array(); 4. Wracamy do 2. Jaki efekt? proszę zobaczyć ![]() ![]()
Zapomniałem dodac co dostajemy w wyniku ![]() Kod array
0 => string 'rodzic' (length=6) 1 => string 'dziecko' (length=7) 2 => string 'wnuczek' (length=7) 3 => string 'prawnuczek' (length=10) 4 => string 'praprawnuczek' (length=13) 5 => string 'prapraprawnuczek' (length=16) Exception caught: Index out of bound! null array 'prawnuczek' => array 'praprawnuczek' => array 'prapraprawnuczek' => array empty array 'rodzic' => array 'dziecko' => array 'wnuczek' => array 'prawnuczek' => array 'praprawnuczek' => array 'prapraprawnuczek' => array empty -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 04:16 |