PHP сортирует массив гиперссылок по тексту ссылки - PullRequest
1 голос
/ 24 ноября 2010

У меня есть массив гиперссылок, сгенерированных из объекта 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);

Вызов asort в $ stack не сортирует массив по тексту ссылки.

Я думаю, что это может вызвать регулярное выражение для подмножества строки гиперссылки в массиве, а затем сравнение строк и переключение в массиве, но я не знаю, как это сделать в PHP.

Любые идеи высоко ценятся.

Ответы [ 4 ]

1 голос
/ 24 ноября 2010

В соответствии с приведенным кодом, текст ссылки находится в $value1. Таким образом, вы можете сортировать на основе этого.

Предполагая, что текст ссылки можно использовать в качестве ключа массива (не содержит недопустимых символов ключа), вы можете добавить их в массив следующим образом: $links[$value1] = '<a href="#" id="program_link_' . $id . '" class="program_link">' . $value1 . '</a><br>'; и затем отсортировать их по ключу ksort($links);

1 голос
/ 24 ноября 2010

Я подозреваю, что идентификатор уникален. Поэтому сначала создайте хороший массив ключ / значение, а затем отсортируйте его. Затем заполните стек отсортированными гиперссылками

$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 голосов
/ 24 ноября 2010

сортировка массива может быть сделана так:

array_sort($value, 'linkname', SORT_ASC)

и затем проанализируйте его в цикле foreach. Дополнительную информацию о сортировке массива из запроса по определенному ключу можно найти в руководстве php: sort

0 голосов
/ 24 ноября 2010

С макушки головы, что-то вроде этого должно работать:

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

foreach ($keys as $key) {

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...