>  기사  >  백엔드 개발  >  for와 foreach 루프 구조의 차이점은 무엇입니까?

for와 foreach 루프 구조의 차이점은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-06-22 15:29:152868검색

배열을 탐색하는 것은 프로그래밍에서 가장 일반적인 방법입니다. 여기서는 for와 foreach라는 두 가지 방법에 대해 설명합니다. 순회를 수행하기 위해 이 두 가지 방법을 사용하는 시나리오는 너무 많습니다. 여기서는 다음 두 배열을 예로만 설명합니다. 소위 "튜브를 통해 표범을 본다"는 것은 둘 사이의 차이를 어느 정도 명확하게 할 수 있습니다.

먼저 순회를 위해 두 개의 배열을 준비합니다:

$arr1=array(1=>'a', 3=>22, 5=>'b', 4=>'c', 8=>'d');

$arr2=array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', 'd'=>'ddd', 'e'=>'eee');

One:

for loop 구조

Loop 1:

<?php
for($i=0,$num=count($arr1);$i<$num;$i++){
    echo $arr1[$i].&#39; &#39;;
}
?>

출력 결과:

a 22 c

Loop 2:

<?php
for($i=0,$num=count($arr2);$i<$num;$i++){
    echo $arr2[$i].&#39; &#39;;
}
?>

이 명령문은 출력되지 않습니다.

분석 :

루프 1은 배열 $arr1의 처음 두 단위만 인쇄하는 반면, 루프 2의 $arr2는 아무것도 인쇄하지 않습니다.

이유는 for 루프가 숫자만큼 증가하므로 for는 키가 숫자인 배열에만 액세스할 수 있기 때문입니다. 예를 들어 루프 1은 키가 있는 $arr1 배열에 점진적으로 액세스하기 위해 $i=0 ~ $i=4를 사용합니다. 셀은 0부터 4까지이지만 배열의 키는 1,3,5,4,8입니다. 4(5=>'b',8=>'d')를 초과하는 키 값을 가진 배열 단위는 count($arr1)=5이기 때문에 액세스되지 않으므로 최종 출력은 $i<5; 결과만: a 22 c; $arr2의 모든 키는 숫자가 아닌 문자이므로 루프 2에는 출력이 없습니다.

두 개: foreach 루프 구조

루프 3:

<?php
foreach($arr1 as $key=>$value){
    echo $key.&#39;=>&#39;.$value.&#39; &#39;;
}
?>

출력 결과:

1=>a 3=>22 5=>b 4=>c 8=>d

루프 4:

<?php
foreach($arr2 as $key=>$value){
    echo $key.&#39;=>&#39;.$value.&#39; &#39;;
}
?>

출력 결과:

a=>aaa b=>bbb c=>ccc d=>ddd e=>eee

분석:

foreach 루프 구조는 다음에 따라 반복됩니다. 포인터 내부 array 예, foreach가 실행되기 시작하면 배열 내부의 포인터가 자동으로 첫 번째 유닛을 가리킵니다. 따라서 다음 루프에서 다음 단위를 얻게 되며 배열 키에 따라 전체 배열을 순회할 필요가 없습니다. 이는 foreach와 for의 차이점이기도 합니다. 물론 foreach는 배열과 개체에만 사용할 수 있으며 foreach는 내부 배열 포인터에 의존하기 때문에 루프에서 값을 수정하면 예상치 못한

동작이 발생할 수 있습니다.

참고: for의 각 루프는 해당

index 아래의 값에 대해 작동하며 각 값의 변경 사항은 탐색된 개체에도 반영됩니다. foreach는 단위를 작동할 때마다 해당 인덱스와 값을 각각 변수로 가져오거나 값을 하나의 변수로 가져온 다음 탐색된 개체 자체에 영향을 주지 않고 인덱스와 값을 별도로 사용하여 변수를 작동합니다. 순회 프로세스 중에 객체의 값을 수정하려면 선언에서 변수 앞에 & 기호를 추가해야 합니다. 예: foreach($array as &$value).

결론: 배열이 연속된 숫자를 배열 단위의 키로 사용하는 경우 for 루프 구조를 사용할 수 있습니다. 배열의 키나 배열의 키에 문자가 포함되어 있는지 확실하지 않은 경우 foreach 루프 구조를 사용해야 합니다.

위 내용은 for와 foreach 루프 구조의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.