0 レビュー
1 回答
phpを使用して親カテゴリノードの下にxml子ノードを表示できませんか?
ばかげた質問をしたかもしれないことは知っていますが、私の質問に関しては、とにかく、優れたPHP開発者に本当に熱心です:
次の構造が必要です
Cat1 item1 item2
Cat2 item21 item22
など...私のXML構造は次のとおりです:
<?xml version="1.0" encoding="utf-8"?> <List> <category name="cat1" dispName="First Category" catCode="FC1"> <item itmCode="item1"> <name>item 1</name> <img>path to image 1</img> </item> <item itmCode="item2"> <name>item 2</name> <img>path to image 2</img> </item> </category> <category name="cat2" dispName="Second Category" catCode="SC2"> <item itmCode="item21"> <name>item 21</name> <img>path to image 21</img> </item> <item itmCode="item22"> <name>item 22</name> <img>path to image 22</img> </item> </category> </List>
私のPHPコードは次のとおりです:
<?php $xml=simplexml_load_file('items.xml') or die('Error: Cannot create Grouped Items'); foreach($xml->category as $cat){ $currentCat=$cat['dispName']; $catName=$cat['name']; echo $catName.'<br/>'; echo $currentCat.'<br/>'; $itemsCount=3; $random = array_rand($xml->xpath('category'), 3); if(is_array($random) || is_object($random)){ foreach ($random as $key){ //here is the issue as am trying to get the child nodes of each of the category nodes from the above XML list } }else{echo '<br/>error<br/>';} } ?>
後でカテゴリが多すぎて、それぞれに30を超えるアイテムが含まれる、パフォーマンスの高いリストページを作成するための最良の方法は何ですか。
開発者-デザイナーがいるこのプロジェクト(家族プロジェクト)で一人で作業しているので、助けと提案に本当に感謝しています:)
わからない
0
レビュー
答え :
解決策:
例のXMLのように、アイテムがカテゴリの下にグループ化されている場合、2つの単純なforeachループがトリックを実行します:
$xml = simplexml_load_string($x); // assume XML in $x
foreach ($xml->category as $cat) {
echo $cat['dispName'] . PHP_EOL;
foreach ($cat->item as $item) {
echo $item->name . PHP_EOL;
}
}
アイテムを制限するにはカウンターを追加し、 break
を使用して内部のforeach
ループを停止します。カウンター=制限。
foreach($ xml-> category as $ cat){
echo $cat['dispName']。 PHP_EOL;
$ count = 0;
foreach($ cat-> item as $ item){
echo $item->name。 PHP_EOL;
$ count = $ count + 1;
if($ count == 3){-コード-2};
}
}
別の方法として、counter
実際の動作を確認してください: https://eval.in/533305
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。