0

大量の製品データを含むxmlファイルがあります。フィールド(ProductRange)のデータに従って製品を並べ替える必要があります。

$ProductRange=urldecode($_GET['Range']);

XMLファイルデータ:

<?xml version="1.0" standalone="yes"?>
<Rows>
<Row Code="10026" Name="Eden 36cm Shallow Round Planter Terracotta"  
ProductRange="Eden;3" ProductSubRange="EDEN 36CM ROUND PLANTER"  />
<Row Code="10031" Name="Lid only for 30l Crystal and Uni Clear" 
ProductRange="Crystal;410;Uni;3" ProductSubRange="30Ltr LID"    />
<Row Code="10088" Name="Casa Hipster Laundry Basket Silver" ProductRange="Casa;2"  
ProductSubRange="CASA HIPSTER LAUNDRY BASKET" />
<Row Code="10091" Name="Casa Hipster Laundry Basket Ice White" 
ProductRange="Casa;8;Laundry;1" ProductSubRange="CASA HIPSTER LAUNDRY BASKET"   />
<Row Code="10200" Name="Eden Grid Cover Black" ProductRange="Eden;8" 
ProductSubRange="EDEN DRAIN TIDY/GRID COVER" />
<Row Code="10249" Name="Lid only for 50L Uni Assorted" ProductRange="Uni;1" 
ProductSubRange="50Ltr MAXI BOX LID"  />
<Row Code="10259" Name="Uni 50L Box Clear" ProductRange="Uni" ProductSubRange="MAXIBOX" />
<Row Code="10269" Name="Eden 46cm Shallow Round Planter Terracotta"       
ProductRange="Eden;1" ProductSubRange="EDEN 46CM ROUND PLANTER"  />
</Rows>

フィールド「ProductRange」には、値/順序が含まれています。つまり、ProductRange = "{Range of Product}; {Sorting OrderofProductそれはProductRangeの下に表示されます}"。たとえば、Code="10031"とProductRange="Crystal; 410; Uni; 3"の製品は、それぞれ、並べ替え順が410のCrystalと並べ替え順序3のUniの両方の下に表示されます。ProductRange="などのセミコロンなしのProductRangeユニ」は任意の順序で表示できます。セミコロン付きのXMLで示されているように、ProductRangeには複数の製品を含めることができることに注意してください。

質問: PHPを使用してProductRangeフィールドを分割し、この昇順の並べ替え順序のような結果を生成できるように、商品を並べ替えるにはどうすればよいですか?

エデン:

  Code: 10269         Name: Eden 46cm Shallow Round Planter Terracotta
  Code: 10026         Name: Eden 36cm Shallow Round Planter Terracotta 
  Code: 10200         Name: Eden Grid Cover Black

ユニ:

 Code=10259          Name: Uni 50L Box Clear
 Code:10249          Name: Lid only for 50L Uni Assorted 
 Code:10031          Name: Lid only for 30l Crystal and Uni Clear

結晶:

  Code:10031         Name: Lid only for 30l Crystal and Uni Clear

カサ:

  Code:10088         Name: Casa Hipster Laundry Basket Silver
  Code="10091"       Name: Casa Hipster Laundry Basket Ice White

等々.....

この順序でデータを抽出するにはどうすればよいですか?親切に私を助けてください。

4

1 に答える 1

0

以前の関数は問題なく動作しますが、必要なのはマイナーな変更だけです

変化する

                case 'ProductRange' :

                case 'ProductRange' :
                case 'Name' :

または単にswitchステートメントを削除します

それから電話する

$list = groupBy($xml, "Name", array("show" => true,"delimiter" => " ","name" => "Eden"));
print("<pre>");
foreach ( $list as $name => $value ) {
    foreach ( $value as $element ) {
        printf("Code:%s         Name: %s\n",$element['Code'],$name);
    }
}

出力

Code:10026         Name: Eden 36cm Shallow Round Planter Terracotta
Code:10200         Name: Eden Grid Cover Black
Code:10269         Name: Eden 46cm Shallow Round Planter Terracotta
于 2012-11-05T08:19:48.313 に答える