![]() |
Sortera array av objekt (simpleXML)
Jag försöker få min array av objekt att sorteras efter inläggningsdatum (<added>..</added> i XML filen) i PHP men det verkar som jag inte riktigt förstår det här med sortering av objekt med fler dimensioner i usort...
Kan någon vänlig själ upplysa mig om vad det är jag gör för fel? XML filen: http://pastebin.com/ZG07PGMc Koden: http://pastebin.com/PWC8k09G Arrayens uppbyggnad: Kod:
SimpleXMLElement Object |
usort($xml->car, [..] bör det ju vara ;)
|
Citat:
Följande kod: Kod:
<?php Kod:
1272916867 (2010-05-03 10:05) |
Jag tror inte att $xml->car returnerar en array. Du måste alltså själv göra en ny array som du sedan sorterar. Något i stil med:
Kod:
$car_data = array(); |
Så det finns ingen annan lösning än att göra om array av objekt till vanlig array och sortera den då? Anledningen till att jag frågar är att jag helst vill behålla objektstrukturen och att varje objekt innehåller ca. 20 attribut (ej med i mitt exempel).
|
Citat:
|
Citat:
Original XML filen innehåller dock fler attribut förrutom 'added' i varje objekt men det är oviktigt i detta sammanhang. |
Citat:
znap:s kod bör funka om du tar bort indexet. PHP-kod:
|
Det gjorde susen - tusen tack qson!
En modifiering man måste göra är explicit omvandla 'added' till int eller string då man inte kan jämföra attribut med strängar, då funkar det inte. Ändringen: PHP-kod:
Förstår dock inte varför KarlRoos förslag inte fungerade (även med typecasting)... |
CarlRoos förslag fungerar inte därför att $xml->car inte är en array. Det är ett XML-objekt med en iterator (som gör att den fungerar med foreach).
sort-funktionerna fungerar bara med arrayer. Inte med iterator-objekt. |
Citat:
|
Jag rekommenderar att kika på XSL som fixar sådana problem på ett kick (kanske lite överkurs för ditt exempel men det är nog vad jag skulle använt).
|
Alla tider är GMT +2. Klockan är nu 08:36. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson