Sortowanie i grupowanie danych SimpleXML

Sortuję i grupuję dane publikacji z pliku XML. Metody, których obecnie używam, działają dobrzeprzez większą część, chociaż czuję, że istnieje skuteczniejszy sposób na robienie tego, co próbuję osiągnąć.

Oto przykładowy wygląd węzłów docelowych:

<comic>
      <id>117</id>
      <mainsection>
        <series>
          <displayname>My Amazing Adventure</displayname>
          <sortname>My Amazing Adventure</sortname>
        </series>
      </mainsection>
      <issuenr>2</issuenr>
      <seriefirstletter>
        <displayname>M</displayname>
        <sortname>M</sortname>
      </seriefirstletter>
    </comic>

Oto aktualne kroki, które podejmuję.

Ładowanie pliku XML za pomocą SimpleXMLOkreślenie węzła docelowego i użycie iterator_to_array do przekonwertowania go na tablicęUżywając funkcji usort, która porównuje (strcmp) atrybut seriesname, aby posortować wszystkie serie alfabetycznie.Używam ciągu kwerendy dla każdej strony, aby określić każdą literę alfabetu i używając instrukcji IF, która porównuje literę ciągu zapytania z wartością z listu seryjnego. Zwracane są tylko odpowiednie węzły.Następnie zaczynam moje oświadczenie foreach. Echoing danych, które chcę, do elementów LI.Na koniec używam jQuery do sprawdzenia identyfikatorów każdego elementu LI i wizualnego grupowania ich. Stworzyłem zmienną PHP, która używa nazwy serii, z usuniętymi spacjami dla identyfikatorów. Wstawia nagłówek H4 o odpowiedniej nazwie serii, nad grupą i wstawia oddzielenie DIV poniżej grupy.

Podczas sortowania alfabetycznego działa prawidłowo. Chcę również, aby problemy z tej samej serii były sortowane numerycznie.Obecnie nie działa. Teraz numeryczny porządek sortowania wygląda mniej więcej tak: 1, 10, 12, 2, 3.

Chciałbym wyprostować numeryczny problem sortowania. Mam również wrażenie, że grupowanie, które obecnie wykonuję w jQuery, może być wykonane w PHP, podczas gdy przechodzę przez pętlę. Wszelkie porady dotyczące lepszego / bardziej wydajnego sposobu obsługi tych danych byłyby bardzo mile widziane.

questionAnswers(2)

yourAnswerToTheQuestion