현재 위치: > 최신 기사 목록> Foreach Loop과 결합하여 Array_shift를 사용하여 트래버스 어레이를보다 효율적으로 사용하는 방법은 무엇입니까?

Foreach Loop과 결합하여 Array_shift를 사용하여 트래버스 어레이를보다 효율적으로 사용하는 방법은 무엇입니까?

gitbox 2025-08-12

PHP에서 Foreach 는 가장 일반적으로 사용되는 배열에 사용되며 어레이의 모든 요소에 간결하고 효율적으로 액세스 할 수 있습니다. 그러나 일부 구체적인 경우 array_shift () 함수를 조합하여 이동 효율을 향상시킬 수 있습니다. Array_Shift ()는 일반적으로 배열의 첫 번째 요소를 삭제하는 데 사용되지만 Foreach 와 결합하면 간결한 코드를 유지하면서 특수 목적을 달성 할 수 있습니다. 이 기사는 Foreach 루프에서 Array_shift ()를 사용하는 방법을 분석하고 장점과 제한 사항을 논의합니다.

array_shift () 란 무엇입니까?

array_shift () 는 PHP에서 일반적으로 사용되는 배열 작동 함수입니다. 배열에서 첫 번째 요소를 제거하고 배열의 다른 요소를 앞으로 이동하는 데 사용됩니다. 이 작업은 원래 배열을 변경하므로 원래 배열을 수정하지 않으려면 먼저 사본을 만드는 것을 고려할 수 있습니다.

 <span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">array_shift</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);  </span><span><span class="hljs-comment">// $array 이제 [2, 3, 4]</span></span><span>
</span></span>

array_shift () 제거 된 요소를 반환합니다. 배열이 비어 있으면 NULL을 반환하십시오.

foreach 에서 array_shift ()를 사용하십시오

Foreach 루프 자체는 매우 직관적이며 배열의 각 요소를 지정된 변수에 자동으로 할당합니다. 그러나 Traversal 동안 배열에서 요소를 동적으로 제거하려면 Array_shift ()를 사용할 수 있습니다. 이 접근법은 루프 전통적인 인덱스를 수동으로 관리하지 않고도 배열에서 요소에 요소에 액세스하고 삭제하는 데 도움이 될 수 있습니다.

다음은 Foreach 루프에서 Array_shift ()를 사용하는 방법을 보여주는 예입니다.

 <span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">array_shift</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);  </span><span><span class="hljs-comment">// 각 트래버스 후 배열의 첫 번째 요소를 제거합니다.</span></span><span>
}
</span></span>

이 예에서는 Array_Shift ()가 매번 배열의 첫 번째 요소를 제거하므로 Foreach는 배열의 각 요소에 액세스하고 각 루프의 배열 내용을 수정합니다. 루프 동안 배열의 수정을 신경 쓰지 않고 배열의 현재 상태에 따라 Foreach 반복을 주목할 가치가 있습니다.

장점

  1. Concise Code : 배열을 가로 지르는 동안 배열을 수정 해야하는 경우 ForeachArray_shift () 를 결합하면 배열 인덱스를 수동으로 관리하지 않고도 코드를보다 간결하게 만들 수 있습니다.

  2. 자동 액세스 및 제거 : 각 루프에서 배열의 첫 번째 요소가 자동으로 제거되어 배열 구조를 명시 적으로 조정할 필요가 없습니다.

한정

  1. 성능 문제 : Array_Shift () 로 인해 배열의 첫 번째 요소가 제거되지만 호출 될 때마다 배열이 다시 표시되므로 큰 배열의 성능 손실이 발생할 수 있습니다. 특히 배열이 크면 array_shift () 로 자주 호출하면 많은 메모리 작업이 발생합니다.

  2. 원래 배열에 영향을 미칩니다 : Array_Shift () 는 원래 배열을 수정하므로 원래 배열의 구조를 보존 해야하는 경우 조심해야합니다. 원래 배열을 수정하지 않으려면 먼저 배열 복사를 고려할 수 있습니다.

언제 array_shift () + foreach를 사용해야합니까?

이 방법은 다음 시나리오에서 사용하기에 적합합니다.

  • 배열 요소를 가로 지르고 점차 삭제 해야하는 경우, 삭제 작업은 배열의 전면에서 시작해야합니다.

  • 배열 크기가 작거나 삭제 작업이 자주 발생하지 않으면 성능 병목 현상이 분명하지 않습니다.

  • 배열의 인덱스 또는 성능 최적화에 너무 많은주의를 기울이지 않고 코드를 단순화 해야하는 경우.

예 : 큐를 처리하려면 foreacharray_shift ()를 사용하십시오

다음은 Array_shift ()를 사용하여 간단한 큐 작업을 구현하는보다 실용적인 예입니다. 대기열의 특성은 첫 번째 최초의 첫 번째 (FIFO)이며 Array_Shift ()를 사용 하여이 동작을 시뮬레이션 할 수 있습니다.

 <span><span><span class="hljs-variable">$queue</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];

</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$item</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_shift</span></span><span>(</span><span><span class="hljs-variable">$queue</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Processing item: <span class="hljs-subst">$item</span></span></span><span>\n";
    </span><span><span class="hljs-comment">// 대기열 항목에서 관련 작업을 수행하십시오</span></span><span>
}
</span></span>

이 예에서는 array_shift ()가 큐의 첫 번째 요소를 제거하고 반환 한 다음 큐가 비어있을 때까지 처리합니다.

요약

foreach loops와 array_shift ()를 결합하면 특정 유형의 작업을 처리 할 때 코드가 더 간결하게 만들 수 있습니다. 그러나이 방법은 특히 큰 배열을 다룰 때 고성능 오버 헤드를 가지고 있습니다. 따라서 성능 요구 사항이 높은 시나리오에서는 배열의 빈번한 재 표시를 피하기 위해 루프 사용하는 것과 같은 다른 최적화 솔루션을 고려해야 할 수 있습니다.