foreach는 배열 복사본에서 작동하는 반면(배열 복사를 통해) while은 배열의 내부 인덱스를 이동하여 작동합니다. 일반적으로 foreach가 시작될 때 먼저 배열을 복사하기 때문에 while이 foreach보다 빠릅니다. 실행 및 while ) 그러나 결과는 정반대입니다.
배열 "읽기" 작업은 루프에서 수행되므로 foreach가 while보다 빠릅니다.
코드 복사 코드는 다음과 같습니다.
foreach ($array as $value) {
echo $value;
}
while (list($key) = Each($array)) {
echo $ array[$key ]
}
배열 "쓰기" 작업은 루프에서 수행되므로 while은 foreach보다 빠릅니다.
코드 복사 코드는 다음과 같습니다.
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = Each($array)) {
$array[$key] = $array[$key] . ';
}
요약: 일반적으로 foreach에는 값 복사가 포함되어 while보다 속도가 느린 것으로 알려져 있지만 실제로 루프에서 배열만 읽는 경우 foreach는 이는 PHP에서 사용하는 복사 메커니즘이 "참조 계산, 쓰기 시 복사"이기 때문입니다. 즉, PHP에서 변수가 복사되더라도 실제로는 여전히 참조 형식입니다. .변수인 경우에만 실제 복사는 내용이 변경될 때만 발생합니다. 이렇게 하는 이유는 메모리 소비를 절약하고
복사의 효율성도 향상시키기 위한 것입니다. 이러한 관점에서 foreach의 효율적인 읽기 작업을 이해하는 것은 어렵지 않습니다. 또한 foreach는 배열 쓰기 작업을 처리하는 데 적합하지 않기 때문에 대부분의 경우 foreach($array as $key => $value) 형식의 배열 쓰기 작업 코드를 교체해야 한다는 결론을 내릴 수 있습니다. while (list($key) =
각($array)). 이러한 기술로 인해 발생하는 속도 차이는 소규모 프로젝트에서는 명확하지 않을 수 있지만 단일 요청에 수백, 수천 또는 수천만 개의 배열 루프 작업이 포함되는 프레임워크와 같은 대규모 프로젝트에서는 차이가 분명해집니다.
위 내용은 torrentkitty 검색 내용을 포함하여 torrentkitty 검색 php foreach와 while의 성능 비교를 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.