목록 항목의 역순
이 코드의 리스트 항목의 순서를 거꾸로 하고 싶습니다.기본적으로 이것은 가장 오래된 것에서 최근으로 이어지는 일련의 해이며, 나는 그 결과를 되돌리려고 노력하고 있다.
<?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
'source' 카테고리의 다른 글
$_COOK 접근setcookie() 직후 IE (0) | 2022.11.05 |
---|---|
Ubuntu 18.04에서 MariaDB 10.01을 완전히 삭제합니다. (0) | 2022.11.05 |
jQuery 이벤트 키 누르기:어떤 키를 눌렀습니까? (0) | 2022.10.27 |
JavaScript Promise 상태를 동기적으로 판별하려면 어떻게 해야 합니까? (0) | 2022.10.27 |
MySQL: #126: 테이블에 대한 잘못된 키 파일 (0) | 2022.10.27 |