source

목록 항목의 역순

manycodes 2022. 10. 27. 23:05
반응형

목록 항목의 역순

이 코드의 리스트 항목의 순서를 거꾸로 하고 싶습니다.기본적으로 이것은 가장 오래된 것에서 최근으로 이어지는 일련의 해이며, 나는 그 결과를 되돌리려고 노력하고 있다.

<?php
    $j=1;     
    foreach ( $skills_nav as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
    }
?>  

뒷걸음질

순수하게 PHP 솔루션을 찾고 있다면 목록을 거꾸로 계산하여 전면에서 후면까지 액세스할 수도 있습니다.

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

$index = count($accounts);

while($index) {
  echo sprintf("<li>%s</li>", $accounts[--$index]);
}

상기의 세트$index요소의 총 수에 도달한 후 다시 접근하기 시작하여 다음 반복의 인덱스 값을 줄입니다.

어레이의 리버스

또한 이 함수를 사용하여 배열의 값을 반전하여 역순으로 액세스할 수 있습니다.

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

foreach ( array_reverse($accounts) as $account ) {
  echo sprintf("<li>%s</li>", $account);
}

array_reverse 함수를 사용할 수도 있습니다.

array_reverse()는 소스 배열을 변경하지 않고 새 배열을 반환합니다.(을 참조). 따라서 먼저 새 배열을 저장하거나 for 루프 선언 내에서 함수를 사용해야 합니다.

<?php 
    $input = array('a', 'b', 'c');
    foreach (array_reverse($input) as $value) {
        echo $value."\n";
    }
?>

출력은 다음과 같습니다.

c
b
a

따라서 OP를 수신처로 하기 위해 코드는 다음과 같습니다.

<?php
    $j=1;     
    foreach ( array_reverse($skills_nav) as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
}

마지막으로 제가 추측해보자면$j첫 번째 시도에서 사용된 카운터 중 하나였거나$skills_nav, 또는 의 수를 세는 방법$skills_nav어레이. 전자의 경우 올바른 솔루션을 가지고 있으므로 삭제해야 합니다.후자의 경우는, 루프외의 경우, 루프의 외부로부터, 루프의 외부로,$j = count($skills_nav).

어레이(또는 임시 복사)를 파기해도 괜찮다면 다음을 수행할 수 있습니다.

$stack = array("orange", "banana", "apple", "raspberry");

while ($fruit = array_pop($stack)){
    echo $fruit . "\n<br>"; 
}

생산:

raspberry 
apple 
banana 
orange 

이 솔루션은 인덱스를 만지작거리는 것보다 더 깔끔하게 읽을 수 있고 인덱스 처리의 실수가 발생할 가능성이 적다고 생각합니다만, 우선 어레이의 임시 복사를 작성해야 할 경우 코드 실행에 다소 시간이 걸릴 수 있습니다.인덱스를 조작하면 실행 속도가 빨라질 수 있으며 다음과 같이 인덱스를 실제로 참조해야 하는 경우에도 유용합니다.

$stack = array("orange", "banana", "apple", "raspberry");
$index = count($stack) - 1;
while($index > -1){
    echo $stack[$index] ." is in position ". $index . "\n<br>";
    $index--;
} 

하지만 보시다시피 지수에 매우 주의해야 합니다.

사용자 지정 함수를 사용하여 자체 정렬 규칙을 만들 수 있습니다.

인덱스 배열(관련 또는 다차원 아님)을 되돌리기만 하면 되는 경우 단순 for 루프로 충분합니다.

$fruits = ['bananas', 'apples', 'pears'];
for($i = count($fruits)-1; $i >= 0; $i--) {
    echo $fruits[$i] . '<br>';
} 

SQL Query를 통해 어레이가 채워진 경우 MySQL에서 결과를 뒤집는 것을 고려하십시오.

SELECT * FROM model_input order by creation_date desc

배열에 Boolean false 값이 없는 경우 내부 포인터 함수를 기반으로 다음 코드를 사용할 수 있습니다.

$array = ['banana', 'apple', 'pineapple', 'lemon'];

$value = end($array);
while ($value !== false) {
     // In case you need a key
    $key = key($array);

    // Do something you need to
    echo $key . ' => ' . $value . "\n";

    // Move pointer
    $value = prev($array);
}

이 솔루션은 임의의 키를 가진 어소시에이트 어레이에서 동작하며 기존 키를 변경하거나 새로 작성할 필요가 없습니다.

<?php
    $j=1; 


      array_reverse($skills_nav);   


    foreach ( $skills_nav as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
    }
?> 

언급URL : https://stackoverflow.com/questions/10777597/reverse-order-of-foreach-list-items

반응형