Как отсортировать foreach

176
05 февраля 2021, 16:40

Есть список который формирует foreach

Допустим такой

<a href="/test1">test1</a>
<a href="/test2">test2</a>
<a href="/test3">test3</a>
<a href="/test4">test4</a>
<a href="/test5">test5</a>
<a href="/test6">test6</a>
<a href="/test7">test7</a>

Вопрос как сделать так что бы допустим 5 ссылка стала первой в очереди и список получился таким

<a href="/test5">test5</a>
<a href="/test1">test1</a>
<a href="/test2">test2</a>
<a href="/test3">test3</a>
<a href="/test4">test4</a>
<a href="/test6">test6</a>
<a href="/test7">test7</a>
Answer 1

Помоему, foreach перебирает уже имеющийся список, а не формирует. Например у нас есть массив $tests. Внутри foreach используется вывод элементов массива, примерно в таком виде(этот пример с использованием шаблонизатора blade фреймворка laravel):

@foreach ($tests as $test)
    {{ $test }} 
@endforeach

Который как раз может выдать результат, как в вашем примере, то вот так можно сделать вывод 5го элемента первым(отсчет с нуля)

{{ tests[4] }}

А так вывести все остальные:

@foreach($tests as $index => $test)
    @If ($index != 4)
        {{$test}}
    @endif
@endforeach

Если используется чистый php, то так можно сделать вывод:

echo $tests[4] ;
foreach ($tests as $key => $test) {
    if($key != 4) {
        echo $test;
    }
}
Answer 2

Тут вариантов несколько.. Вам либо до foreach формировать массив нужный и выводить уже в цикле, либо же, как выше написали, просто выборочно выводить что и где нужно.. Сменить эл-т в массиве (аля 5 пункт первым поставить) как вы написали можно как-то так:

$array = array_splice($array,array_search('key_from_array',array_keys($array)),1) + $array;

Соответственно, key_from_array это ключ эл-та, который нужно "переместить" вверх. Так-то способов это сделать много. В зависимости от необходимых изменений и стоит применять тот или иной

READ ALSO
Php 7.1 preg_replace заменяет указанные символы [дубликат]

Php 7.1 preg_replace заменяет указанные символы [дубликат]

Задаю вот такой код в PHP чтобы убрал все кроме букв и цифр, а в инпуте пишу например Геральт ++[** а вместо того чтобы вывести просто **Геральт...

110
Родительское и дочерние окна

Родительское и дочерние окна

у меня есть MVC система на PHPЗа redirect отвечает отдельный контроллер, условно RedirectController

98
Zoom при с работе с Google Maps

Zoom при с работе с Google Maps

Пытаюсь разобраться с работой с координатами, вычисляю свои координаты и перемещаю камеру, все верно, но если добавить к точке перемещения...

91
Алгоритм поиска билета для автобусов

Алгоритм поиска билета для автобусов

Пишу приложение для поиска и продажи билетов на автобусыНо столкнулся с трудностью составления алгоритма поиска билетов

103