배열 순회는 프로그래밍에서 가장 일반적인 것입니다. 여기서는 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');
1: for 루프 구조
Loop 1 :
for($i=0,$num=count($arr1);$i<$num;$i++){ echo $arr1[$i].' '; }
출력 결과: a 22 c
루프 2:
for($i=0,$num=count($arr2);$i<$num;$i++){ echo $arr2[$i].' '; }
이 문에는 출력이 없습니다
분석:
루프 1은 배열 $arr1의 처음 두 단위만 인쇄하는 반면, 루프 2의 $ arr2는 아무것도 인쇄하지 않습니다.
이유는 for 루프가 숫자만큼 증가하므로 for는 인덱스 배열에만 액세스할 수 있기 때문입니다. 예를 들어 루프 1은 $arr1 배열에서 $i=0부터 $i까지 키가 0부터 4인 단위에 점진적으로 액세스합니다. =4. 그러나 이 배열의 키는 1,3,5,4,8입니다. 4(5=>'b',8=>'d')를 초과하는 키 값을 가진 배열 단위는 count($arr1)=5이기 때문에 액세스되지 않으므로 최종 출력은 $i<5; 결과만: a 22 c; $arr2의 모든 키는 숫자가 아닌 문자이므로 루프 2에는 출력이 없습니다.
2 foreach가 실행되기 시작하면 배열 내부의 포인터가 자동으로 첫 번째 요소를 가리킵니다. 따라서 다음 루프에서 다음 단위를 얻게 되며 배열 키에 따라 전체 배열을 순회할 필요가 없습니다. 이는 foreach와 for의 차이점이기도 합니다. 물론 foreach는 배열 및 개체에만 사용할 수 있으며 foreach는 내부 배열 포인터에 의존하기 때문에 루프에서 해당 값을 수정하면 예기치 않은 동작이 발생할 수 있습니다. 참고: for의 각 루프는 해당 인덱스 아래의 값에 대해 작동하며 각 값의 변경 사항은 탐색된 개체에도 반영됩니다. foreach는 단위를 작동할 때마다 해당 인덱스와 값을 각각 변수로 가져오거나 값을 하나의 변수로 가져온 다음 탐색된 객체 자체에 영향을 주지 않고 인덱스와 값을 별도로 사용하여 변수를 작동합니다. 순회 프로세스 중에 객체의 값을 수정하려면 선언에서 변수 앞에 & 기호를 추가해야 합니다. 예: foreach($array as &$value). 결론: 배열이 연속된 숫자를 배열 단위의 키로 사용하는 경우 for 루프 구조를 사용할 수 있습니다. 배열의 키 또는 배열의 키에 문자가 포함되어 있는지 확실하지 않은 경우 foreach 루프 구조를 사용해야 합니다.위 내용은 PHP에서 for와 foreach 순회 배열의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!