1
我有以下函數,它通過遞歸調用自身來讀取給定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節點。它可以有任何數量的元素和子元素。我的想法是,我+1一個深度變量,每次函數進入遞歸。問題是,當我在一個實際上並沒有深入的節點中,但在樹中,我必須-1變量。因此,對於我當前所在的每個節點,我需要關於DOM節點的當前元素的深度,該節點在進入遞歸之前已經傳遞給函數(!)。
謝謝,這確實不是我的意圖。我更新了我的問題,以更好地解釋我的意思。 – Sebastian
答案已更新。 – wkampmann