효율성과 관련하여 foreach 루프에서 함수 호출을 사용하는 데 문제가 있습니까? 예를 들어 :foreach 루프에서 함수 호출 사용
foreach ($this->getValues() as $value) {
//Do something with $value
}
기본적으로
$values = $this->getValues();
foreach ($values as $value) {
//Do something with $value
}
대, 첫 번째 예에서 한 번만) $ this->에 getValues을 (를 호출 할만큼 영리한 PHP는, 또는 각 반복에 전화 않습니다. 이 반복 될 때마다 그것을 호출하는 경우, 어떻게,
* 루프 내에서 모든 작업을 수행하면 효율성이 떨어집니다. – goat
음, 두 번째 접근법의 유일한 단점은 메모리를 차지하는 추가 변수가 필요하다는 것입니다. 그래서 나는 첫 번째 접근 방식을 택할 것입니다. –
부두에서는 "추가 변수"가 실제로 존재하지 않습니다. PHP는 copy-on-write를 사용하는데, 이는'$ values'와 foreach 루프가 같은 데이터 셋을 참조한다는 것을 의미합니다. 고려해야 할 유일한 것은 변수가 가비지 컬렉팅 될 때이다. (루프의 마지막에있는) 첫 번째 예제에서 두 번째 (함수/파일의 끝에 또는'unset 라는). –