0

我有以下html结构:

<span class="1">
    <span class="name">
    </span>
    <span class="books">
        <span class="english">
        </span>
        <span class="english">
        </span>
    </span>
</span>
<span class="2">
    <span class="name">
    </span>
    <span class="books">
        <span class="english">
        </span>
        <span class="english">
        </span>
    </span>
</span>
...

我正在使用以下函数来检索它:

$oDomObject = $oDomXpath->query("//span[number(@class)=number(@class)]");

如何将值存储在 PHP 数组中以保持嵌套顺序?

foreach ($oDomObject as $oObject) {
    ..*SOMETHING*..
}

谢谢您的帮助!

4

1 回答 1

-1

您将需要构建一个类似于以下内容的递归函数。

警告:未经测试,可能需要一些调整。但这应该把你的头放在正确的位置。

foreach ($oDomObject as $oObject) {
  $myArray[] = getChildren($oObject);
}

function getChildren($nodeObj) {
  retArray = array();
  if($nodeObj->hasChildren()) {
    $retArray[] = getChildren($nodeObj);
  } else {
    $retArray[] = $nodeObj->nodeValue;
  }
  return $retArray;
}

它的作用:如果它遇到一个没有子节点的节点,它会将值附加到数组中。如果不是,它会将子值的数组附加到数组中。这种情况令人作呕,并且尽可能地深入。

需要考虑的事情:

  1. 当这完成时,我希望我的数组看起来像什么,因为在一定深度的情况下,这会变得非常荒谬并且非常烦人。

  2. 为什么我要附加到一个可能会再次循环的数组,而不是现在处理所需的操作?

于 2014-04-18T23:55:47.253 回答