2010-04-07 5 views
1

J'ai un problème pour commander un tableau par un champ de cela, je laisse ici l'exempleCommander tableaux multidimensionnels PHP

foreach($xml as $site){ 
echo '<div><a href="'.$site->loc.'">'.$site->loc.'</a>' .$site->padre.'</div>'; 
} 

Quelques fois le dépôt $site->padre est vide, mais je voudrais commander par $site->padre alphabétique j'ai vu l'exemple avec usort mais je ne comprends pas comment le travailler.

Merci d'avance.

Vive

Répondre

1
<?php 

    function alphabetize($a, $b){ 
    # property notation as used in original question 
    return strcmp($a->padre, $b->padre); 
    } 

    $xml = uasort($xml, 'alphabetize'); 
    foreach($xml as $site){ 
    # your code here 
    } 

?> 

Vous pouvez également utiliser une fonction lambda en utilisant create_function() PHP

$xml = uasort($xml, create_function('$a,$b', 'return strcmp($a->padre, $b->padre);')); 

Ou, si vous avez PHP> = 5,3

$xml = uasort($xml, function($a,$b){ return strcmp($a->padre, $b->padre); }); 
3
function cmp($a, $b){ 
    return strcmp($a['padre'], $b['padre']); 
} 

usort($xml, "cmp"); 
foreach($xml as $site){ 
    echo '<div><a href="'.$site->loc.'">'.$site->loc.'</a>' .$site->padre.'</div>'; 
} 

La fonction cmp sera appelée pour chaque élément du tableau. La fonction doit retourner un entier pour déterminer si $ a est plus, moins ou égal à $ b. Spécifier ['padre'] dans la fonction cmp va comparer cet élément.

+0

Si vous souhaitez maintenir l'association d'index dans votre $ xml array, puis utilisez uasort au lieu de usort. –

Questions connexes