У меня есть 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 = «{Диапазон продукта}; {Порядок сортировки продукта должен отображаться в ProductRange}". Например, продукт с кодом = «10031» и ProductRange = «Crystal; 410; Uni; 3» должен отображаться как в Crystal, так и в Sorting ASCENDING порядке 410 и Uni с порядком сортировки 3 соответственно. И ProductRange без точки с запятой, например ProductRange = " Uni "может отображаться в любом порядке. Обратите внимание: ProductRange может иметь несколько продуктов, как указано в XML с точкой с запятой.
Вопрос: Как я могу сортировать свои продукты, разбивая поле ProductRange с помощью PHP, чтобы он мог генерировать результаты, как в этом порядке сортировки по возрастанию:
Eden:
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
Uni:
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
Casa:
Code:10088 Name: Casa Hipster Laundry Basket Silver Code="10091" Name: Casa Hipster Laundry Basket Ice White
и так далее…..
Как я могу извлечь данные в этом порядке? Пожалуйста, помогите мне.
Ваша предыдущая функция будет делать все, что вам нужно, это небольшие изменения
+ Изменить
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