0
我正在解析文檔上的DOMDocument,該文檔將具有我感興趣的h3
和li
標記的可預測結構。目前我正在使用這個功能。從DOMDocument在PHP中填充多維數組
function showDOMNode(DOMNode $domNode) {
foreach ($domNode->childNodes as $node)
{
$myName = preg_replace('/(\s)+/', ' ', $node->nodeName);
$myValue = preg_replace('/(\s)+/', ' ', $node->nodeValue);
if ($myName=="h3" or $myName=="li"){
$myText = $myName.":".$myValue;
print $myText;
echo"\n";
}
if($node->hasChildNodes()) {
showDOMNode($node);
}
}
}
其中給出的
h3:Category1
li: Apple
li: Banana
h3:Category2
li: Ant
h3:Category3
li: Alaska
h3:Category4
li: Albania
li: Bahamas
漂亮的輸出,但想以某種方式把這個變成一個多維數組。 $myArray[][]
其中第一維是h3
值和li
值被放置在適當的h3
陣列中。
function showDOMNode(DOMNode $domNode, $arrayToFill) {
foreach ($domNode->childNodes as $node)
{
$myName = preg_replace('/(\s)+/', ' ', $node->nodeName);
$myValue = preg_replace('/(\s)+/', ' ', $node->nodeValue);
if ($myName=="h3" or $myName=="li"){
//somehow insert $myValue into $arrayToFill maybe???
}
if($node->hasChildNodes()) {
showDOMNode($node,$arrayToFill);
}
}
return $arrayToFill;
}
或者如果有更簡單的方法來做到這一切,我對任何事情都是開放的。數據結構將始終有li
標籤以h3
標籤分隔。
這完美地創建第一水平,但代替,比方說,'[「蘋果」,「香蕉」]'它只是返回一個空數組,'=>數組()'用於第二級別的項目。 – turkeyhundt
我把一個echo聲明,所以它肯定迭代通過這些'li'項目,但只是沒有把它們存儲在任何地方... – turkeyhundt
好吧,我用'$ arrayToFill = showDOMNode替換'showDOMNode($ node,$ arrayToFill);'' ($ node,$ arrayToFill);'並且它返回了同一個空的第一級數組的數組,除了數組中的第二個元素是一個未命名的數組並且每個'li'項在同一個數組中。參考數組參數做同樣的事情。讓我確定我正在做你說的話。這是我得到的。 Array([Category1] => Array(), [] => Array(Apple,Banana,Ant,Alaska,Albania,Bahamas), [Category2] => Array(), [Category3] => Array ), [Category4] => Array() )' – turkeyhundt