同じ情報が異なるノードの子として表示されるXMLがあります。そのような :
<root>
<category id=1>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
</products>
</category>
<category id=2>
<products>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
<product id="PPP543" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
</sizes>
</product>
</products>
</category>
私の目標は、製品ID ABC123のサイズを選択し、それらを配列として格納することです。私が持っている現在のコードは:
$arrTest=array();
foreach($xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ]/sizes/size') as $size){
array_push($arrTest, $size["name"]);
}
$productCallは私が探しているIDです。この場合はABC123です。
出力はS、M、L、XL、2XL、3XL、S、M、L、XL、2XL、3XLです。見つかった2つのエントリを読み取っていることを意味します。foreachループを考えると、これを期待していましたが、最初の結果の出力を取得する方法を見つけることができないようです。[0]と[1]を追加してみました:
$y=$xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ][1]/sizes/size');
[0]は何も返しません、[1]は私がすでに得ているのと同じ結果を返します。
これまでxpathを実際に使用したことがないので、これが基本的なものを見逃したり、考えすぎたりするという単純な問題であることを願っています。