Nice programing

PHP의 특정 인덱스에서 foreach 루프를 시작하는 방법

nicepro 2020. 12. 10. 21:10
반응형

PHP의 특정 인덱스에서 foreach 루프를 시작하는 방법


foreach0 번째 인덱스에서 시작하지 않고 대신 내 배열의 첫 번째 인덱스에서 시작 하는 a 작성하고 있습니다. 루프의 시작점을 오프셋하는 방법이 있습니까?


단순하게 유지하십시오.

foreach ($arr as $k => $v) {
   if ($k < 1) continue;
   // your code here.
}

continue매뉴얼 제어 구조를 참조하십시오 .


A Foreach는 어레이를 재설정합니다.

참고 : foreach가 처음 실행을 시작하면 내부 배열 포인터가 배열의 첫 번째 요소로 자동 재설정됩니다. 이는 foreach 루프 전에 reset ()을 호출 할 필요가 없음을 의미합니다.

for루프를 사용하십시오 ( 연관 배열 아닌 경우에만 ).

$letters = range('a','z');
for($offset=1; $offset < count($letters); $offset++) {
    echo $letters[$offset];
}

또는 while루프 (모든 배열 일 수 있음)

$letters = range('a','z');
next($letters);
while($letter = each($letters)) {
    echo $letter['value'];
}

또는 LimitIterator

$letters = new LimitIterator(new ArrayIterator(range('a','z')), 1);
foreach($letters as $letter) {
    echo $letter;
}

생성자를 통해 시작 오프셋 및 개수를 지정할 수 있습니다.

위의 모든 항목은 a에서 z 대신 b에서 z 문자를 출력합니다.


다음 array_slice기능을 사용할 수 있습니다 .

$arr = array(); // your array
foreach(array_slice($arr, 1) as $foo){
   // do what ever you want here
}

물론 원하는 오프셋 값을 사용할 수 있습니다. 이 경우 1배열의 첫 번째 요소를 '건너 뛰십시오'.


foreach에서는 그렇게 할 수 없습니다. 원하는 것을 얻는 방법은 두 가지뿐입니다.

  1. for 루프를 사용하고 위치 1에서 시작
  2. foreach를 사용하고 실제 코드 주위에 if ($ key> 0) 같은 것을 사용하십시오.

foreach는 그 이름이 말하는대로합니다. 모든 요소에 대해 뭔가 수행 :)

편집 : 좋아, 아주 사악한 해결책이 내 마음에 떠올랐다. 다음을 시도하십시오.

foreach(array_reverse(array_pop(array_reverse($array))) as $key => $value){
    ...
}

그것은 배열을 뒤집고 마지막 요소를 튀어 나와 다시 뒤집습니다. 첫 번째 요소를 제외한 요소가 있습니다.

그러나 다른 솔루션 중 하나를 사용하는 것이 좋습니다. 가장 좋은 것이 첫 번째 것입니다.

그리고 변형 :이를 위해 array_slice ()를 사용할 수 있습니다.

foreach(array_slice($array, 1, null, true) as $key => $value){
    ...
} 

그러나 foreach 루프의 배열 키를 유지하려면 세 매개 변수를 모두 사용해야합니다.


for 루프가 여기로 이동하는 더 좋은 방법 인 것 같지만 foreach를 사용해야한다고 생각하면 배열에서 첫 번째 요소를 이동하고 다시 이동 해제 할 수 있습니다.

$a = array('foo','bar');
$temp = array_shift($a);
foreach ( $a as $k => $v ) {
  //do something
}
array_unshift($a, $temp);

아무 본문도 말하지 않았지만 배열을 변경하는 데 신경 쓰지 않고 주어진 배열의 두 번째 요소에서 시작하려면 다음을 수행하십시오.

unset($array[key($array)]);
foreach($array as $key=>$value)
{
    //do whatever
}

괜찮다면 추가하세요

$saved = $array;
unset($array[key($array)]);
foreach($array as $key=>$value)
{
    //do whatever
}
$array = $saved;

또한 지정된 알려진 색인을 건너 뛰려면

key($array)

주어진 색인으로

참고 URL : https://stackoverflow.com/questions/3229905/how-to-start-a-foreach-loop-at-a-specific-index-in-php

반응형