PHP按链接文本对超链接数组进行排序

时间:2010-11-23 23:27:10

标签: php arrays sorting

我有一个从ab对象生成的超链接数组,用于在页面上显示。链接文本是页面上显示的全部内容。我需要按字母顺序对超链接/链接文本进行排序。

这就是我所拥有的:

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

$ stack上的asort调用不会按链接文本对数组进行排序。

我认为这可能需要对数组中超链接字符串的子集进行正则表达式,然后在数组中进行字符串比较和切换,但在PHP中如何做到这一点却不知所措。

任何想法都非常感激。

4 个答案:

答案 0 :(得分:1)

根据给出的代码,链接文本是$value1中的内容。所以你可以根据它进行排序。

假设链接文本可以用作数组键(不包含无效的键字符),您可以将它们添加到数组中:$links[$value1] = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>';然后按键ksort($links);对它们进行排序

答案 1 :(得分: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);
}

答案 2 :(得分:0)

脱离我的头脑,这样的事情应该有效:

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

foreach ($keys as $key) {

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

}

答案 3 :(得分:0)

对数组进行排序可以这样完成:

array_sort($value, 'linkname', SORT_ASC)

然后在foreach循环中解析它。有关按特定键对查询排序数组的更多信息,请参见php manual: sort