Vprintf는 문자열을 형식화하고 화면에 출력하기위한 PHP에서 매우 실용적인 기능입니다. printf 함수의 변형입니다. 주요 차이점은 VPRINTF가 배열을 인수로 받아들이고 Printf는 여러 개의 개별 인수를 수용한다는 것입니다. VPRINTF를 사용하면 여러 매개 변수를 쉽게 처리 할 수 있지만 사용할 때 무시하기 쉬운 함정이 있습니다. 이 팁을 마스터하면 일반적인 실수를 피할 수 있습니다.
Printf 함수와 마찬가지로 VPRINTF는 범위에 정의 된 자리 표시자를 정의하여 변수를 올바르게 삽입합니다. 따라서 전달 된 매개 변수의 수와 유형은 자리 표시 자의 요구 사항과 포맷 된 문자열의 요구 사항과 엄격하게 일치해야합니다. 그렇지 않으면 프로그램에 오류가 발생하거나 예상치 못한 결과를 출력합니다.
예를 들어:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">42</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %d and the string is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
이 예에서는 %d가 정수 42 로 대체되고 %s는 "Hello, World!" 로 대체됩니다. . 더 적은 매개 변수를 전달하거나 매개 변수 유형이 일치하지 않으면 프로그램에 오류가 발생합니다.
VPRINTF를 사용할 때, 각 자리 표시 자 (예 : %d , %s , %f 등)는 해당 매개 변수의 데이터 유형과 일치해야합니다. 예를 들어, %d는 정수 유형을 기대하고 %f는 부동 수를 기대합니다. 데이터 유형이 잘못되면 출력이 잘못되거나 경우에 따라 프로그램이 충돌하게됩니다.
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">3.14</span></span><span>, </span><span><span class="hljs-string">"PHP"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"Value is %d and message is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>); </span><span><span class="hljs-comment">// 여기 %d 정수와 일치해야합니다,그러나 통과되는 것은 부동 가치입니다</span></span><span>
</span></span>
이로 인해 오류가 발생하거나 출력이 예상대로 아닐 수 있습니다. 따라서 각 형식의 기호가 해당 매개 변수 유형과 일치하는지 확인하는 것이 VPRintf를 사용하는 열쇠입니다.
vprintf 의 장점 중 하나는 배열을 인수로 받아들이지만 여기의 순서는 형식의 문자열의 자리 표시 자의 순서와 일치해야합니다. 그렇지 않으면 출력이 혼란 스러울 것입니다.
예를 들어:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"Hello, World!"</span></span><span>, </span><span><span class="hljs-number">42</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The string is %s and the number is %d"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
배열에서 순서를 바꾸는 경우 :
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">42</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The string is %s and the number is %d"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
출력 결과는 다음과 같습니다.
<span><span>The </span><span><span class="hljs-built_in">string</span></span><span> </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-number">42</span></span><span> </span><span><span class="hljs-keyword">and</span></span><span> the number </span><span><span class="hljs-keyword">is</span></span><span> Hello, World!
</span></span>
이 잘못된 순서는 데이터에서 혼란을 일으킬 수 있으므로 VPRIRTF 로 전달한 배열은 올바른 순서를 유지해야합니다.
경우에 따라, 특히 문자열에 특수 문자가 포함 된 경우 출력에 VPRIRNTF를 사용할 때 문제가 발생할 수 있습니다. 문자열에 % 또는 기타 특수 기호가 포함 된 경우 형식의 기호로 잘못 구문 분석 할 수 있습니다. 이를 피하기 위해 캐릭터를 탈출하여 해결할 수 있습니다.
예를 들어:
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"%d is the value"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
여기서 %d는 자리 표시 자로 오해 될 것이므로 이중 퍼센트 부호 %% 를 사용하여 탈출해야합니다.
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-string">"%%d is the value"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The number is %s"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
이런 식으로 %%는 자리 표시자가 아닌 별도의 % 문자로 출력됩니다.
플로팅 값을 출력 해야하는 경우 형식 기호를 사용하여 정확도를 제어 할 수 있습니다. %f는 기본적으로 6 진수 자리를 출력하지만 출력 할 소수점 이하의 수를 지정할 수 있습니다. 이런 식으로 숫자 표시를보다 유연하게 제어 할 수 있습니다.
<span><span><span class="hljs-variable">$args</span></span><span> = [</span><span><span class="hljs-number">3.1415926535</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">vprintf</span></span><span>(</span><span><span class="hljs-string">"The value of pi is %.2f"</span></span><span>, </span><span><span class="hljs-variable">$args</span></span><span>);
</span></span>
이것은 출력됩니다 :
<span><span>The </span><span><span class="hljs-keyword">value</span></span><span> of pi </span><span><span class="hljs-keyword">is</span></span><span> </span><span><span class="hljs-number">3.14</span></span><span>
</span></span>
여기서 %.2f는 소수점 이하 두 자리를 유지하는 것을 의미합니다. 소수점 이하의 장소가 지정되지 않으면 PHP는 기본적으로 소수점 이하 자리를 출력합니다.
vprintf는 문자열 서식을보다 유연하게 만들지 만 VPRINTF 에 대한 빈번한 호출은 매우 긴 문자열을 형식화해야 할 때, 특히 많은 양의 데이터를 처리 할 때 형식을 형식화해야 할 때 성능에 영향을 줄 수 있습니다. 형식 형식의 문자열을 자주 출력 해야하는 경우 불필요한 통화를 줄이기 위해 형식의 프로세스를 기능 외부에 배치하는 것을 고려할 수 있습니다.
VPRINTF를 사용할 때 가장 중요한 것은 형식의 기호가 데이터 유형과 일치하고 배열 전송의 주문 문제를 피하고 특수 문자를 합리적으로 처리하고 정밀 제어를 처리하는 것입니다. 이러한 기술을 마스터하면 일반적인 실수를 피하고 코드를보다 효율적이고 읽을 수있게 할 수 있습니다.