У меня есть следующая функция, которая считывает все дочерние элементы/текстовые узлы данного элемента dom в массив, путем рекурсивного вызова.В PHP DOM получить глубину элемента/узла в рекурсивной функции
Он отлично работает, но мне нужна глубина каждого узла (текста или элемента) относительно первого (!) Узла DOM до того, как произошла какая-либо рекурсия. Я не могу понять, как это сделать, любые идеи?
function recursively_find_text_nodes($dom_element) {
$return = array();
foreach ($dom_element->childNodes as $dom_child) {
switch ($dom_child->nodeType) {
case XML_TEXT_NODE:
if (trim($dom_child->nodeValue) !== '') {
$return[] = $dom_child->nodeValue;
}
break;
case XML_ELEMENT_NODE:
$return = array_merge($return, $this->recursively_find_text_nodes($dom_child));
break;
}
}
return $return;
}
Я анализирую узел XML с помощью этой функции. Он может иметь любое количество элементов и подэлементов. Идея состоит в том, что I +1 - переменная глубины, каждый раз, когда функция переходит в рекурсию. проблема в том, что когда я нахожусь в узле, который на самом деле не идет глубже, но в дереве мне придется -1 переменную. Поэтому для каждого узла, в котором я сейчас находится, мне понадобится глубина текущего элемента в отношении узла DOM, который был передан функции перед (!), Который перешел в рекурсию.
Спасибо, это действительно не то, что я намеревался. Я обновил свой вопрос, чтобы лучше объяснить, что я имел в виду. – Sebastian
Ответ был обновлен. – wkampmann