2010-11-23 11 views
1

Ich habe ein Array von Hyperlinks, die von einem Objekt zur Anzeige auf einer Seite generiert werden. Der Linktext ist alles, was auf der Seite angezeigt wird. Ich muss die Hyperlinks alphabetisch sortieren. HierPHP sortiere ein Array von Hyperlinks nach Verknüpfungstext

ist, was ich habe:

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); 

Der asort Anruf auf $ Stapel nicht das Array nicht sortieren, indem Link-Text.

Ich denke, dass dies eine regexp auf der Teilmenge der Hyperlink-Zeichenfolge im Array aufrufen kann, und dann eine Zeichenfolge vergleichen und im Array wechseln, aber bin nicht wissen, wie in PHP zu tun.

Alle Ideen sehr geschätzt.

+0

Ich würde ein zweites Array erstellen und sie mit 'strip_tags()' Ed-Werten füllen. Sortieren Sie das, und verwenden Sie seine Schlüssel, um das richtige Array anzuzeigen (nicht ganz trivial zu tun, aber ich bin sicher, dass es eine Array-Funktion dafür gibt) –

Antwort

1

Nach dem Code gegeben, der Link-Text ist, was in $value1 ist. So können Sie basierend darauf sortieren.

Unter der Annahme, dass der Link-Text kann als Array Schlüssel verwendet werden (keine ungültigen Schlüssel Zeichen enthalten) Sie sie in ein Array als solche hinzufügen: $links[$value1] = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>'; und dann sortieren, indem Schlüssel ksort($links);

0

Aus der Spitze von meinem Kopf, so etwas wie dies funktionieren soll:

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

foreach ($keys as $key) { 

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

} 
1

Ich vermute, dass ID ist einzigartig. Also erst ein nettes Schlüssel/Wert-Array erstellen und dann sortieren. Dann füllen Stapel mit sortierten Hyperlinks

$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

das Array Sortier wie dies getan werden könnte:

array_sort($value, 'linkname', SORT_ASC) 

parsen und sie dann innerhalb der foreach Schleife. Weitere Informationen zum Sortieren eines Arrays aus einer Abfrage nach einem bestimmten Schlüssel finden Sie in der php manual: sort

Verwandte Themen