亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP Foreach 保存 ID

PHP Foreach 保存 ID

PHP
一只名叫tom的貓 2022-06-11 10:36:57
我有所謂的“GAEB”文件,它們是 XML 結構的。我通過 foreach 和 simplexml 遍歷這些。XML/GAEB 文件:<GAEB>  <Award>    <BoQ>      <BoQBody>        <BoQCtgy RNoPart="01">          <BoQBody>            <BoQCtgy RNoPart="01">              <BoQBody>                <BoQCtgy>                  <BoQBody RNoPart="01">                    <Itemlist>                      <Item RNoPart="1">                      <Item RNoPart="2">                    </Itemlist>                  </BoQBody>                </BoQCtgy>                <BoQCtgy>                  <BoQBody RNoPart="02">                    <Itemlist>                      <Item RNoPart="1">                      <Item RNoPart="2">                    </Itemlist>                  </BoQBody>                </BoQCtgy>              </BoQBody>            </BoQCtgy>            <BoQCtgy RNoPart="02">              <BoQBody>                <BoQCtgy>                  <BoQBody RNoPart="01">                    <Itemlist>                      <Item RNoPart="1">                      <Item RNoPart="2">                    </Itemlist>                  </BoQBody>                </BoQCtgy>                <BoQCtgy>                  <BoQBody RNoPart="02">                    <Itemlist>                      <Item RNoPart="1">                      <Item RNoPart="2">                    </Itemlist>                  </BoQBody>                </BoQCtgy>              </BoQBody>            </BoQCtgy>          </BoQBody>        </BoQCtgy>      </BoQBody>    </BoQ>  </Award></GAEB>我的 PHP 代碼循環遍歷所有 $xml->BoQBody->BoQCtgy 直到找到一個 Itemlist。然后遍歷該 Itemlist 并從那里獲取一些信息。之后再次開始循環。PHP:<?php$file = "pathtoxmlfile";$xml = simplexml_load_file($file);function loop($path, $xml){  foreach($path->BoQBody->BoQCtgy as $BoQCtgy){    $nr = $BoQCtgy->attributes()["RNoPart"];    echo $nr;      問是,深度每次都是另一個。我使用 PHP 代碼獲得了我需要的所有位置和所有值,沒有任何問題。但是我找不到匹配的編號...
查看完整描述

1 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

使用 XPath,您不必擔心項目的深度。在這種情況下,它首先使用...查找具有RNoPart屬性的任何節點//*[@RNoPart]

  • // - 任何級別

  • 任何節點

  • [@RNoPart] - 帶有 RNoPart 屬性(@表示屬性)

它循環遍歷結果,然后使用ancestorXPath 中的軸來查找具有另一個 RNoPart 屬性的所有父元素,使用ancestor::*/@RNoPart.

當它循環這些(在本例中)時,它只輸出值,然后.在每個子集之后加上 a 和一個新行。

所以放在一起,你得到...

foreach ( $xml->xpath("//*[@RNoPart]") as $part )   {

    foreach ( $part['RNoPart']->xpath("ancestor::*/@RNoPart") as $part )   {

        echo $part.".";

    }

    echo PHP_EOL;

}

并使用您的示例 XML,輸出...


01.

01.01.

01.01.01.

01.01.01.1.

01.01.01.2.

01.01.02.

01.01.02.1.

01.01.02.2.

01.02.

01.02.01.

01.02.01.1.

01.02.01.2.

01.02.02.

01.02.02.1.

01.02.02.2.


查看完整回答
反對 回復 2022-06-11
  • 1 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號