PHP: Wie man XML-alphabetisch nach dem Attribut vor die "for each" - Schleife
Das setup:
Ich habe eine externe XML-Datei, die ich haben keine Kontrolle über, hier ist es:
001.xml
<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="001" Name="001">
<Images>
<ImageGalleryEntry Name="1 John" Description="Doe" FileName="830358.1john.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/830358.logooraclehealthsciencesthumb.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/830358.logooraclehealthsciencesthumb.png</S3ThumbnailKey>
<ContentLength>1309</ContentLength>
</ImageGalleryEntry>
<ImageGalleryEntry Name="11 Jane" Description="Doet" FileName="943702.11jane.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/943702.logorochethumb.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/943702.logorochethumb.png</S3ThumbnailKey>
<ContentLength>1403</ContentLength>
</ImageGalleryEntry>
<ImageGalleryEntry Name="10 Jack" Description="Smith" FileName="965501.10jack.png" Width="100" Height="100">
<S3Key>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/images/965501.pwclogo.png</S3Key>
<S3ThumbnailKey>accounts/b2d174c1-a408-4d58-9d48-1490ac4e9f9b/site-37857/cms-assets/thumbnails/965501.pwclogo.png</S3ThumbnailKey>
<ContentLength>7021</ContentLength>
</ImageGalleryEntry>
</Images>
</Gallery>
Ich habe auch ein php-code, der nimmt diese Information und setzt es in html schön:
index.php fragment
<?php
$url = '001.XML';
$xml = simplexml_load_file($url);
foreach($xml->Images->ImageGalleryEntry as $item) {
echo $item['FileName'] . "<br/>" . $item['Name'] . "<br/>" . $item['Description'] . "<br/><br/>";
};
?>
Die Ausgabe ist:
830358.1 john.png
1 John
Doe943702.11 jane.png
11 Jane
Doet965501.10 jack.png
10 Jack
Smith
Das problem ist, dass ich es wirklich benötigen, bestellt durch das Name-Attribut, wie hier:
830358.1 john.png
1 John
Doe965501.10 jack.png
10 Jack
Smith943702.11 jane.png
11 Jane
Doet
Beachten Sie, dass die XML ändert sich ständig, so das php automatisch die Reihenfolge alphabetisch nach Namen. Ich vermute ich muss irgendwie Sortieren alphabetisch alle ImageGalleryEntry tags durch Ihren Namen-Attribut vor Eintritt in die for-each-Schleife, aber keine Ahnung, wie das zu tun.
Bitte geben Sie eine eigentliche Weg, es zu tun, ich bin neu in php, und nicht wissen, was zu tun ist, wenn Sie etwas sagen wie "machen Sie ein array".
- Vorsicht vor schreiben nie beantwortet, wenn Ihr müde, ich wollte schlafen dann erkannt, dass meine Antwort hatte wurde grundlegend fehlerhaft, so dass neu gestartet, meinen laptop zu kommen und es löschen. Sorry ich habe mir nicht die Tatsache, dass Sie wurden Objekte berücksichtigt, wenn was auf die Funktion Sortieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie usort. Sollte dies funktionieren: