Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8650505
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T13:50:21+00:00 2026-06-12T13:50:21+00:00

I am sorting & grouping publication data from an XML file. The methods I

  • 0

I am sorting & grouping publication data from an XML file. The methods I am currently using are working fine for the most part, although I feel like there is a more efficient way to do what I am trying to accomplish.

Here is a sample of what the target nodes look like:

<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>

Here are the current steps I am taking.

  • Loading the XML file with SimpleXML
  • Specifying the target node and using iterator_to_array to convert it to an array
  • Using a usort function that compares (strcmp) the seriesname attribute, to sort all of the series alphabetically.
  • I’m using a query string for each page to specify each letter of the alphabet and using an IF statement that compares the query string letter to the seriesfirstletter value. So only the applicable nodes are returned.
  • I then begin my foreach statement. Echoing out the data I want, into LI items.
  • Finally, I’m using jQuery to look at the ID’s for each LI item and visually group them. I’ve created a PHP variable that uses the seriesname, with the spaces removed, for the ID’s. It inserts a H4 heading with the proper series name, above the group and inserts a separating DIV below the group.

While the alphabetical sorting is working properly. I’m also wanting the issues within the same series to be sorted numerically. This is not currently working. Right now, the numeric sort order looks something like this: 1, 10, 12, 2, 3.

I would like to get the numerical sorting issue straightened out. I also feel like the grouping that I’m currently doing in jQuery, could be done in PHP, while I’m going through the loop. Any advice on a better / more efficient way to handle this data, would be greatly appreciated.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T13:50:22+00:00Added an answer on June 12, 2026 at 1:50 pm

    Let’s say you’ve got all <comic> elements as an iterator already. First of all convert it to an array so we can use the array functions:

    $comics = iterator_to_array($comics, 0);
    

    Then you want to sort this array based on some value, here the value of the <issuenr> child. This can be done with usort and the help of a callback function:

    $success = usort($comics, function($a, $b) {
        return strnatcmp($a->issuenr, $b->issuenr);
    });
    

    The callback function just picks the concrete values you want to compare with each other and passes it along to strnatcmp which is the natural order comparison I commented above.


    The following code-example shows how to list all series that match a specific search letter, natsorted and distinct (no duplicate names, grouped).

    The search and the grouping is both done with an xpath query:

    $searchval = 'T';
    
    $file = 'compress.zlib://comiclist10-12.xml.gz';
    
    $xml = simplexml_load_file($file);
    
    $series = $xml->xpath(
        "/*/comiclist/comic[./seriefirstletter/displayname = '$searchval']
            /mainsection/series/sortname[
                not(. = ../../../following-sibling::comic/mainsection/series/sortname)
            ]"
    );
    
    natsort($series);
    
    foreach($series as $serie)
    {
        echo $serie, "\n";
    }
    

    This will then output the sorted list:

    Tale of the Batman: Gotham by Gaslight, A
    Tales of Suspense: Captain America & Iron Man #1 Commemorative Edition
    Tales to Astonish, Vol. 1
    Teenage Mutant Ninja Turtles
    Teenage Mutant Ninja Turtles Micro Series
    Teenage Mutant Ninja Turtles Ongoing
    Terminator / Robocop: Kill Human
    Thanos
    Thing, Vol. 1
    Thor, Vol. 2
    Thor, Vol. 3
    Thor: Blood Oath
    Thor: For Asgard
    Thor: Man of War
    Thor: Son of Asgard
    Thor Annual
    Thor Corps
    Thundercats
    Thundercats (DC Comics - Wildstorm)
    Thundercats: Enemy's Pride
    Tomb of Dracula, Vol. 4, The
    Torch, The
    Toxin
    Transformers: Armada
    Transformers: Generation One
    Transformers: Infiltration
    Truth: Red, White & Black
    

    In the next step you want to list all comics in that series, that would be an inner foreach:

    foreach ($series as $serie) {
        echo $serie, "\n";
    
        $string = xpath_string($serie);
    
        $comics = $serie->xpath("../../../../comic[./mainsection/series/sortname = $string]");
    
        foreach ($comics as $i => $comic) {
            printf(" %d. id: %s\n", $i+1, $comic->id);
        }
    }
    

    Which will then fetch the comics for each series, output:

    Tale of the Batman: Gotham by Gaslight, A
     1. id: 8832
    Tales of Suspense: Captain America & Iron Man #1 Commemorative Edition
     1. id: 3591
    Tales to Astonish, Vol. 1
     1. id: 3589
    Teenage Mutant Ninja Turtles
     1. id: 117
    Teenage Mutant Ninja Turtles Micro Series
     1. id: 13789
    Teenage Mutant Ninja Turtles Ongoing
     1. id: 13780
     2. id: 13782
     3. id: 13787
    Terminator / Robocop: Kill Human
     1. id: 13775
    Thanos
     1. id: 3597
    Thing, Vol. 1
     1. id: 3746
    Thor, Vol. 2
     1. id: 5873
    Thor, Vol. 3
     1. id: 1035
     2. id: 1635
     3. id: 2318
     4. id: 2430
     5. id: 2463
     6. id: 3333
     7. id: 3616
     8. id: 11731
     9. id: 11733
    Thor: Blood Oath
     1. id: 3635
     2. id: 3636
    Thor: For Asgard
     1. id: 11545
     2. id: 11546
    Thor: Man of War
     1. id: 3644
    Thor: Son of Asgard
     1. id: 538
     2. id: 3645
    Thor Annual
     1. id: 5868
    Thor Corps
     1. id: 3640
    Thundercats
     1. id: 209
    Thundercats (DC Comics - Wildstorm)
     1. id: 3654
    Thundercats: Enemy's Pride
     1. id: 3649
    Tomb of Dracula, Vol. 4, The
     1. id: 3719
    Torch, The
     1. id: 2328
     2. id: 2330
     3. id: 2461
    Toxin
     1. id: 3720
    Transformers: Armada
     1. id: 3737
    Transformers: Generation One
     1. id: 557
    Transformers: Infiltration
     1. id: 3729
     2. id: 3731
    Truth: Red, White & Black
     1. id: 3750
     2. id: 3751
    

    The code of the xpath_string function can be found in another answer of mine.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need a solution for sorting of unix pwd file using C++ based on
Algorithms like Timsort, Quicksort & Mergesort dominate the real world sorting methods. The case
Question is about sorting std::vector<myclass> using function sort from STL's algorithms class. Standard way
T-SQL Paging Sorting & Filtering I have been working on a T-SQL stored procedure
I am currently creating a sorting method that consists of values from an mysql
Hi I am using a table manipulation (sorting) script taken directly from Learning jQuery
I am currently working on sorting a linked list in C as a homework
can't get sorting working for a django-tables2 table. class MyModel(models.Model): pid = models.AutoField('id',primary_key =
I using jquery sorting ( http://jqueryui.com/demos/sortable/ ). Is it possible to sort (move list)
I'm sorting numerically on a specific column of a ; separated file with: sort

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.