Autor Zpráva
retree
Profil *
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 *
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 ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0