2010-11-23 10 views
1

J'ai un tableau de liens hypertexte générés à partir de l'objet ab pour l'affichage sur une page. Le texte du lien est tout ce qui est affiché sur la page. J'ai besoin de trier les hyperliens/lien texte par ordre alphabétique.PHP trier un tableau de liens hypertexte par le texte du lien

Voici ce que j'ai:

foreach ($value as $key1 => $value1) { 

     if ($key1 == 'id') { 

     $id = $value1; 

     } 

      if ($key1 == 'name') { 


       $link = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>'; 
      array_push($stack, $link); 

     } 

}

asort($stack); 
print_r($stack); 

L'appel asort sur la pile de $ ne règle pas le tableau par le texte du lien.

Je pense que cela peut appeler une expression rationnelle sur le sous-ensemble de la chaîne de lien hypertexte dans le tableau, puis une chaîne de comparaison et de commutation dans le tableau, mais je ne sais pas comment le faire en PHP.

Des idées très appréciées.

+0

Triez-le, et utilisez ses touches pour afficher le tableau approprié (ce n'est pas trivial à faire, mais je suis sûr qu'il y a une fonction de tableau pour cela) –

Répondre

1

Selon le code donné, le texte du lien est ce qui est en $value1. Donc, vous pouvez trier en fonction de cela.

En supposant que le texte du lien peut être utilisé comme une clé de tableau (ne contient pas de caractères clés invalides), vous pouvez les ajouter à un tableau en tant que tel: $links[$value1] = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>'; puis les trier par clé ksort($links);

0

Du haut de ma tête, quelque chose comme cela devrait fonctionner:

$keys = asort(array_keys($stack)); 
$sorted = array(); 

foreach ($keys as $key) { 

    $sorted[$key] = $stack[$key]; 

} 
1

Je soupçonne que id est unique. Donc créez d'abord un joli tableau clé/valeur puis triez-le. Ensuite, remplissez la pile avec des hyperliens triés

$links = array(); 
foreach ($value as $key1 => $value1) 
{ 
    if ($key1 == 'id') { 
     $id = $value1; 
    } 
    if ($key1 == 'name') { 
     $links[$id] = $value1; 
    } 
} 

asort($links); 
print_r($links); 

foreach($links as $id=>$name) 
{ 
    $link = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $name. '</a><br>'; 
    array_push($stack, $link); 
} 
0

tri le tableau pourrait être fait comme ceci:

array_sort($value, 'linkname', SORT_ASC) 

puis l'analyser dans la boucle foreach. Je pourrais créer un deuxième tableau et les remplir avec des valeurs ed `strip_tags()`. php manual: sort

Questions connexes