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は、配列に変換される変数の名前を表す1つ以上の文字列です。返品値は、変数名とその対応する値を含む連想配列です。変数が未定義であるか、その値が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()関数は3つの変数をアレイに正常にパッケージ化します。
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値の名前は結果から削除され、有効な年齢と都市のみが最終的に保持されます。
フィルタリングルールをより正確に制御する場合(結果から空の文字列やゼロをフィルタリングするなど)、 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>
この例では、コールバック関数は、非nullおよび非空白の文字列の値のみが最終配列に保持されることを保証します。
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>
上記の例では、 $ nameは未定義であるため、返された配列には表示されません。
Compact()は、変数を連想配列に変換するPHPの非常に有用な機能です。 null値を処理する場合、 compact()には、値nullを持つ配列内のこれらの変数が含まれます。配列にnull値またはnull値を含めることを望まない場合は、 array_filter()関数を介してフィルタリングできます。また、より細かい粒状制御のカスタムフィルタリングルールを定義することもできます。
これらのトリックにより、 Compact()を使用するときに変数をより柔軟に処理でき、返された配列が私たちのニーズを満たすことを保証できます。
関連タグ:
null