PHP에서 정수 부서의 일반적인 관행은 Division Operator /를 사용한 다음 Floor () , intval () 또는 캐스트를 결합하여 정수 결과를 얻는 것입니다. 그러나이 접근법은 특히 성능 및 코드 가독성과 관련하여 항상 최적이 아닙니다. intdiv () 함수는 이러한 문제를 해결하도록 설계되었습니다. 이 기사는보다 효율적이고 강력한 PHP 코드를 작성하는 데 도움이되는 intdiv () 의 사용법과 고급 기술을 심층적으로 살펴볼 것입니다.
intdiv () 는 PHP 7 이후로 내장 된 기능으로 정수 부문을 수행하고 정수 결과를 반환합니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$dividend</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$divisor</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
전통적인 부서와 달리 intdiv ()는 소수 부분을 반올림하는 대신 직접 버립니다. 이는 저수준 언어로 제수 작업에 더 가깝게 작동한다는 것을 의미합니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// 산출 3</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(-</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// 산출 -3</span></span><span>
</span></span>
이것은 Intval (10/3) 보다 더 명확하고 성능이 있으며 불필요한 부동 소수점 계산을 피합니다.
intdiv ()는 분할을 사용한 다음 정수로 변환하는 것과 비교하여 하단에서 직종 작업을 직접 수행하여 계산에 참여하는 부동 소수점 수의 오버 헤드를 피하거나 특히 대규모 루프 또는 배치 데이터 처리에서 명백한 이점이 있습니다.
<span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> < </span><span><span class="hljs-number">1000000</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-variable">$a</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$i</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// 분명히 더 빠릅니다 intval($i / 3)</span></span><span>
}
</span></span>
intdiv ()는 "우리는 분할 가능성에만 관심이있다"는 의도를 명확하게 표현합니다. 코드는 더 읽기 쉬우 며 팀워크에 특히 중요합니다.
intdiv ()는 또한 층 () 또는 라운드 ()를 사용하는 것보다 일관된 음수 (C와 일치)에 대해 반올림의 동작을 따릅니다.
페이징 로직을 구현할 때는 종종 현재 페이지 또는 오프셋 수를 계산해야합니다.
<span><span><span class="hljs-variable">$page</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$offset</span></span><span>, </span><span><span class="hljs-variable">$limit</span></span><span>) + </span><span><span class="hljs-number">1</span></span><span>;
</span></span>
기존 (int) ($ 오프셋 / $ 한계) + 1 보다 정확하고 읽기 쉬운.
비트 작동 시뮬레이션과 같은 일부 알고리즘에서 intdiv ()는 특히 심볼 처리와 관련하여 오른쪽 편이 작업을 안전하게 대체 할 수 있습니다.
<span><span><span class="hljs-comment">// 나누기와 동일합니다 2 도매</span></span><span>
</span><span><span class="hljs-variable">$half</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span></span>
금형 가져 오기 작업을 수행 할 때 몫과 나머지가 모두 필요한 경우 intdiv () 및 %는 자연스러운 파트너입니다.
<span><span><span class="hljs-variable">$quotient</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$chunkSize</span></span><span>);
</span><span><span class="hljs-variable">$remainder</span></span><span> = </span><span><span class="hljs-variable">$value</span></span><span> % </span><span><span class="hljs-variable">$chunkSize</span></span><span>;
</span></span>
이 조합은 배치 업로드, 페이징로드, 파일 청킹 및 기타 시나리오를 처리하는 데 매우 일반적입니다.
intdiv ()는 정수 매개 변수 만 허용하고 부동 소수점 번호를 통과하면 TypeError가 발생합니다.
제수는 0이 될 수 없으며, 그렇지 않으면 DivisionByzeroerRor 가 던져집니다.
가변 유형에 대해 확실하지 않은 경우 사용하기 전에 유형 확인 또는 명시 적 변환을 수행하는 것이 좋습니다.
intdiv () 는 종종 간과되지만 매우 강력한 기능입니다. 코드 효율성을 향상시킬뿐만 아니라 의미 론적 선명도를 향상시킵니다. Performance-Critical Loops 또는 정확한 정수 부서가 필요한 비즈니스 논리에 관계없이 intdiv ()는 신뢰할 수있는 도구입니다. 마스터 링은 고급 PHP 개발자로 이동하는 데 중요한 단계가 될 것입니다.