현재 위치: > 최신 기사 목록> PHP의 컴팩트 함수를 사용할 때 NULL 또는 NULL 값을 효과적으로 처리하는 방법은 무엇입니까?

PHP의 컴팩트 함수를 사용할 때 NULL 또는 NULL 값을 효과적으로 처리하는 방법은 무엇입니까?

gitbox 2025-08-22

1. compact () 함수의 기본 사용

compact () 함수의 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(...</span><span><span class="hljs-variable">$var_names</span></span><span>)
</span></span>

매개 변수 $ var_names는 변수의 이름을 나타내는 하나 이상의 문자열입니다. 리턴 값은 변수 이름과 해당 값을 포함하는 연관 배열입니다. 변수가 정의되지 않았거나 그 값이 null 인 경우 compact ()는 여전히 반환 된 배열에 변수를 포함합니다.

예를 들어:

 <span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"John"</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>;
</span><span><span class="hljs-variable">$city</span></span><span> = </span><span><span class="hljs-string">"New York"</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span>, </span><span><span class="hljs-string">"city"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

산출:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [name] =&gt; John
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [city] =&gt; New York
)
</span></span>

이 예에서 compact () 함수는 세 가지 변수를 배열로 성공적으로 포장합니다.

2. compact ()에 의해 값을 처리하는 방법

PHP의 compact () 함수에는 반환 된 배열에서 NULL 값이있는 변수가 포함되며 배열의 해당 값은 NULL이 됩니다.

예를 들어:

 <span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>;
</span><span><span class="hljs-variable">$city</span></span><span> = </span><span><span class="hljs-string">"New York"</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span>, </span><span><span class="hljs-string">"city"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

산출:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [name] =&gt; 
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [city] =&gt; New York
)
</span></span>

위에서 볼 수 있듯이 이름 값은 NULL 이지만 여전히 배열에 나타나고 값은 NULL 입니다.

3. NULL 또는 NULL 값을 필터링하십시오

일부 시나리오에서는 반환 된 배열에 NULL 또는 NULL 값이 나타나기를 원하지 않습니다. 이 상황을 더 잘 처리하기 위해 Compact () 결과를 Array_Filter () 함수를 통해 필터링 할 수 있습니다. Array_Filter ()는 배열에서 NULL 값을 제거 할 수 있습니다 ( NULL , 빈 문자열 포함 " 등).

 <span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>;
</span><span><span class="hljs-variable">$city</span></span><span> = </span><span><span class="hljs-string">"New York"</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span>, </span><span><span class="hljs-string">"city"</span></span><span>));
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

산출:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [city] =&gt; New York
)
</span></span>

Array_Filter () 를 통해 결과에서 NULL 값의 이름이 제거되고 유효한 연령도시 만 결국 유지됩니다.

4. 필터링 규칙을 사용자 정의합니다

필터링 규칙을보다 정확하게 제어하려면 (예 : 결과에서 빈 문자열 또는 0을 필터링하는 등) Array_Filter () 에서 사용자 정의 콜백 함수를 전달할 수 있습니다.

예를 들어:

 <span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>;
</span><span><span class="hljs-variable">$city</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span>, </span><span><span class="hljs-string">"city"</span></span><span>), function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> !== </span><span><span class="hljs-literal">null</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$value</span></span><span> !== </span><span><span class="hljs-string">""</span></span><span>;
});

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

산출:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>

이 예에서 콜백 함수는 비 및 비어 비어있는 문자열의 값 만 최종 배열에 유지되도록합니다.

5. 정의되지 않은 변수를 처리하는 방법

compact ()를 정의되지 않은 경우에 전달되는 특정 변수가 전달되면 자동으로 무시되며 반환 된 배열에는 나타나지 않습니다. 그러나 가변 값이 NULL 인 경우 결과에 여전히 나타납니다.

 <span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>;
</span><span><span class="hljs-variable">$city</span></span><span> = </span><span><span class="hljs-string">"New York"</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">compact</span></span><span>(</span><span><span class="hljs-string">"name"</span></span><span>, </span><span><span class="hljs-string">"age"</span></span><span>, </span><span><span class="hljs-string">"city"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

산출:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [age] =&gt; </span><span><span class="hljs-number">25</span></span><span>
    [city] =&gt; New York
)
</span></span>

위의 예에서는 $ 이름이 정의되지 않으므로 반환 된 배열에는 표시되지 않습니다.

6. 요약

compact ()는 변수를 연관 배열로 변환하는 PHP에서 매우 유용한 기능입니다. NULL 값을 처리 할 때 COMPACT ()에는NULL이 있는 배열에 이러한 변수가 포함됩니다. 배열에 NULL 또는 NULL 값을 포함하지 않으려면 Array_Filter () 함수를 통해 필터링 할 수 있으며 더 미세한 과립 제어를위한 사용자 정의 필터링 규칙을 정의 할 수도 있습니다.

이러한 트릭을 사용하면 Compact ()를 사용할 때 변수를보다 유연하게 처리 할 수있어 반환 된 배열이 우리의 요구를 충족시킬 수 있습니다.

  • 관련 태그:

    null