Multidimensionale array sorteren (Opgelost)
Martijn2008 - 02/08/2009 19:58
PHP beginner
Hoi,
Ik heb de volgende multidimensionale array:
array(0) {
["Album 1"]=>
array(2) {
[0]=>
string(12) "DSC0001.JPG"
[1]=>
string(12) "DSC0002.JPG"
[2]=>
string(12) "DSC0003.JPG"
}
}
[ "Album 1" ] =>
[ 0 ] =>
string( 12 ) "DSC0001.JPG"
[ 1 ] =>
string( 12 ) "DSC0002.JPG"
[ 2 ] =>
string( 12 ) "DSC0003.JPG"
}
}
Deze array wil ik graag sorteren op albums. Bijvoorbeeld: Album 1, Album 2, Album 3 enz. Weet iemand misschien hoe dat moet?
Bedankt alvast voor jullie reacties.
Groeten,
Martijn
9 antwoorden
Gesponsorde links
Martijn2008 - 02/08/2009 20:39
PHP beginner
Mijn array is anders dan in die tutorial.
Raze - 02/08/2009 20:47
PHP beginner
in de tutorial is de array als volgt:
array (
[0] => array ( [0] => 0,
[1] => 1
),
[1] => array ( [0] => 0,
[1] => 1
)
)
die van u is (als ik het goed begrijp):
array (
['album1'] => array ( [0] => string(12) "DSC0001.JPG",
[1] => string(12) "DSC0002.JPG",
[2] => string(12) "DSC0003.JPG"
)
)
[ 'album1' ] => array ( [ 0 ] => string
( 12 ) "DSC0001.JPG" , [ 1 ] => string( 12 ) "DSC0002.JPG" ,
[ 2 ] => string( 12 ) "DSC0003.JPG"
)
)
ik zie eerlijk gezegd weinig verschil tussen deze array's
djb - 03/08/2009 03:18
PHP beginner
ksort moet werken
$array = array(
"Album 1" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG"),
"Album 3" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG"),
"Album 2" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG")
);
ksort($array);
print_r($array);
/* Output:
Array
(
[Album 1] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 2] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 3] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
)
*/
"Album 1" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) , "Album 3" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) , "Album 2" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) ) ;
/* Output:
Array
(
[Album 1] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 2] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 3] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
)
*/
Martijn2008 - 03/08/2009 12:20 (laatste wijziging 03/08/2009 12:22)
PHP beginner
Ooops, ik zie al wat ik verkeerd doe. Ik heb een foutje gemaakt in mijn voorbeeld array. Het is geen `Album 1`, maar `1. AlbumNaam`. Functie ksort() geeft overigens niet de gewenste uitkomst.De array ziet er dus zo uit:
array(0) {
["1. AlbumNaam"]=>
array(2) {
[0]=>
string(12) "DSC0001.JPG"
[1]=>
string(12) "DSC0002.JPG"
[2]=>
string(12) "DSC0003.JPG"
}
}
[ "1. AlbumNaam" ] =>
[ 0 ] =>
string( 12 ) "DSC0001.JPG"
[ 1 ] =>
string( 12 ) "DSC0002.JPG"
[ 2 ] =>
string( 12 ) "DSC0003.JPG"
}
}
Martijn - 03/08/2009 12:23
Crew PHP
let er op dat als je tot elf heb het zo word:
1
10
11
2
etc, omdat je op string sorteert
Rik - 03/08/2009 13:04 (laatste wijziging 03/08/2009 13:13)
Crew algemeen
Met PHP.net: natsort sorteert hij wel op de goede volgorde, maar heb je weer dat probleem met het behouden van de keys.
Edit:
Zo werkt hij dan wel:
$array = array(
"Album 1" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG"),
"Album 10" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG"),
"Album 2" =>
array("DSC0001.JPG","DSC0002.JPG","DSC0003.JPG")
);
uksort($array, 'strnatcmp');
print_r($array);
/* Output:
Array
(
[Album 1] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 2] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 10] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
)
*/
"Album 1" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) , "Album 10" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) , "Album 2" =>
array ( "DSC0001.JPG" , "DSC0002.JPG" , "DSC0003.JPG" ) ) ;
/* Output:
Array
(
[Album 1] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 2] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
[Album 10] => Array
(
[0] => DSC0001.JPG
[1] => DSC0002.JPG
[2] => DSC0003.JPG
)
)
*/
Gesponsorde links
Dit onderwerp is gesloten .