Autor | Zpráva | ||
---|---|---|---|
retree Profil * |
#1 · Zasláno: 27. 10. 2010, 01:42:55
Ahoj. Vytvářím stromovou strukturu pomocí pole a s pomocí referencí se dostávám z rodiče na potomka, na dalšího potomka a nazpět. Důležitá část kódu starající se o přecházení mezi rodiči a potomky:
public function beginConditionBlock() { $this->condition = & $this->condition[]; $this->condition['bind'] = $this->binding; $this->condition = & $this->condition['data']; $this->condition_referencesList[] = & $this->condition; return $this; } public function endConditionBlock() { \array_pop($this->condition_referencesList); $prevCondition = & \end($this->condition_referencesList); if (empty($prevCondition)) $this->condition = & $this->conditions; else $this->condition = & $prevCondition; return $this; } Strukturu pak naplňuji takto: ->beginConditionBlock() ->beginConditionBlock() ....... ->endConditionBlock() ->beginConditionBlock() ...... ->endConditionBlock() ->endConditionBlock() Problém je, že kód struktury, která je označena kurzívou se vůbec nedostane do výsledného pole (kontrolováno i pomocí print_r). Pokud ale odstraním nadřazeného rodiče, tak funguje vše v pořádku. Kde mám chybu? |
||
retree Profil * |
#2 · Zasláno: 28. 10. 2010, 00:46:05
Tak děkuju za pomoc :-) . Právě jsem zjistil že fce end neumí vrátit referenci, takže jsem místo toho použil indexování pole pomocí pole[end(pole)]. No taky by to mohli psát do manuálu a ne abych to našel někde zapadlý v diskusi na php.net ...
|
||
Časová prodleva: 13 let
|
0