2010-11-23 72 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