Position actuelle: Accueil> Derniers articles> Comment gérer efficacement les valeurs nulles ou nulles lors de l'utilisation de la fonction compacte de PHP?

Comment gérer efficacement les valeurs nulles ou nulles lors de l'utilisation de la fonction compacte de PHP?

gitbox 2025-08-22

1. Utilisation de base de la fonction compacte ()

La syntaxe de base de la fonction compacte () est la suivante:

 <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>

Le paramètre $ var_names est une ou plusieurs chaînes représentant le nom de la variable à convertir en un tableau. La valeur de retour est un tableau associatif contenant le nom de variable et sa valeur correspondante. Si une variable n'est pas définie ou si sa valeur est nul , compact () inclura toujours la variable dans le tableau renvoyé.

Par exemple:

 <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>

Sortir:

 <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>

Dans cet exemple, la fonction compacte () emballe avec succès trois variables en un tableau.

2. Comment gérer la valeur nul par compact ()

La fonction compacte () de PHP comprendra une variable avec une valeur de null dans le tableau renvoyé, et la valeur correspondante dans le tableau sera nul .

Par exemple:

 <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>

Sortir:

 <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>

Comme indiqué ci-dessus, la valeur du nom est nul , mais elle apparaît toujours dans le tableau et la valeur est nul .

3. Filtrez les valeurs nulles ou nulles

Dans certains scénarios, nous ne voulons pas que les valeurs nulles ou nulles apparaissent dans le tableau renvoyé. Pour mieux gérer cette situation, les résultats de compact () peuvent être filtrés via la fonction array_filter () . array_filter () peut supprimer les valeurs nuls dans un tableau (y compris null , string vide "" et ainsi de suite).

 <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>

Sortir:

 <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>

Via array_filter () , le nom de la valeur nul est supprimé du résultat, et seuls l' âge et la ville valides sont conservés à la fin.

4. Personnaliser les règles de filtrage

Si vous souhaitez contrôler plus précisément les règles de filtrage (comme le filtrage des chaînes vides ou des zéros du résultat également), vous pouvez passer dans une fonction de rappel personnalisée dans array_filter () .

Par exemple:

 <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>

Sortir:

 <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>

Dans cet exemple, la fonction de rappel garantit que seules les valeurs des chaînes non nulles et non vides sont conservées dans le tableau final.

5. Comment gérer les variables non définies

Si certaines variables transmises lorsque compact () sont appelées indéfinies, elles seront automatiquement ignorées et n'apparaîtront pas dans le tableau retourné. Cependant, si une valeur variable est nul , elle apparaîtra toujours dans le résultat.

 <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>

Sortir:

 <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>

Dans l'exemple ci-dessus, puisque $ le nom n'est pas défini, il n'apparaît pas dans le tableau retourné.

6. Résumé

Compact () est une fonction très utile en PHP qui convertit les variables en tableaux associatifs. Lors du traitement des valeurs nulles , compact () contient ces variables dans le tableau avec la valeur null . Si vous ne souhaitez pas que le tableau contienne des valeurs nulles ou nuls, vous pouvez la filtrer via la fonction Array_Filter () , et vous pouvez même définir des règles de filtrage personnalisé pour un contrôle granulaire plus fin.

Avec ces astuces, nous pouvons gérer les variables de manière plus flexible lors de l'utilisation de Compact () , garantissant que le réseau retourné répond à nos besoins.

  • Étiquettes associées:

    null