我有一个从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中如何做到这一点却不知所措。
任何想法都非常感激。
答案 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