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] => John
[age] => </span><span><span class="hljs-number">25</span></span><span>
[city] => New York
)
</span></span>
이 예에서 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] =>
[age] => </span><span><span class="hljs-number">25</span></span><span>
[city] => New York
)
</span></span>
위에서 볼 수 있듯이 이름 값은 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] => </span><span><span class="hljs-number">25</span></span><span>
[city] => New York
)
</span></span>
Array_Filter () 를 통해 결과에서 NULL 값의 이름이 제거되고 유효한 연령 과 도시 만 결국 유지됩니다.
필터링 규칙을보다 정확하게 제어하려면 (예 : 결과에서 빈 문자열 또는 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> && </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] => </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>
이 예에서 콜백 함수는 비 널 및 비어 비어있는 문자열의 값 만 최종 배열에 유지되도록합니다.
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] => </span><span><span class="hljs-number">25</span></span><span>
[city] => New York
)
</span></span>
위의 예에서는 $ 이름이 정의되지 않으므로 반환 된 배열에는 표시되지 않습니다.
compact ()는 변수를 연관 배열로 변환하는 PHP에서 매우 유용한 기능입니다. NULL 값을 처리 할 때 COMPACT ()에는 값 NULL이 있는 배열에 이러한 변수가 포함됩니다. 배열에 NULL 또는 NULL 값을 포함하지 않으려면 Array_Filter () 함수를 통해 필터링 할 수 있으며 더 미세한 과립 제어를위한 사용자 정의 필터링 규칙을 정의 할 수도 있습니다.
이러한 트릭을 사용하면 Compact ()를 사용할 때 변수를보다 유연하게 처리 할 수있어 반환 된 배열이 우리의 요구를 충족시킬 수 있습니다.
관련 태그:
null