2010-11-23 69 views
1

我有一個從ab對象生成的超鏈接數組,用於在頁面上顯示。鏈接文本就是頁面上顯示的所有內容。我需要按字母順序對超鏈接/鏈接文本進行排序。PHP按鏈接文本排序超鏈接數組

以下是我有:

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

上$棧的ASORT呼叫通過鏈接文本的數組不進行排序。我想這可能會調用數組中的超鏈接字符串的子集上的正則表達式,然後字符串比較和切換數組,但是如何在PHP中執行該操作會導致丟失。

任何想法非常讚賞。

+0

我將創建第二個數組並使用`strip_tags()`ed值填充它們。排序,並使用它的鍵來顯示正確的數組(不是完全無關的,但我確定有一個數組函數) – 2010-11-23 23:35:06

回答

1

按照給定的代碼,鏈接文本是什麼在$value1。所以你可以根據這個進行排序。

假設鏈接文本可以作爲數組鍵(不包含無效按鍵字符),你可以將它們添加到數組作爲這樣的:$links[$value1] = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>';然後通過關鍵ksort($links);

0

關閉我的頭頂,這樣的事情應該工作:

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

foreach ($keys as $key) { 

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

} 
1

我猜想,對它們進行排序id是唯一的。因此,首先創建一個不錯的鍵/值數組然後對其進行排序。然後填寫堆棧排序的超鏈接

$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

排序陣列可以像這樣做:

array_sort($value, 'linkname', SORT_ASC) 

,然後foreach循環中解析它。有關通過特定鍵從查詢中對數組進行排序的更多信息,請參見php manual: sort