web-dev-qa-db-fra.com

Puis-je définir une variable dans une condition PHP if?

Par exemple, puis-je faire:

if ($my_array = wp_get_category($id)) {
    echo "asdf";
} else {
    echo "1234";
}

Si rien n'est retourné par la fonction, je veux entrer dans l'instruction else.

33
Casey

Oui, cela fonctionnera et le motif est utilisé assez souvent.

Si $my_array se voit attribuer une valeur véridique , alors la condition sera remplie.

CodePad .

<?php

function wp_get_category($id) {
   return 'I am truthy!';
}

if ($my_array = wp_get_category($id)) {
    echo $my_array;
} else {
    echo "1234";
}

L'inverse est également vrai ...

Si rien n'est retourné par la fonction, je veux entrer dans l'instruction else.

Une fonction qui ne renvoie rien renverra NULL, qui est falsey .

CodePad .

<?php

function wp_get_category($id) {
}

if ($my_array = wp_get_category($id)) {
    echo $my_array;
} else {
    echo "1234";
}
51
alex

vous voudrez peut-être quelque chose comme ça:

if (!is_null($my_array = wp_get_category($id)) {
    echo "asdf";
else
    echo "1234";

En supposant que la fonction renvoie null en cas d'échec. Vous devrez peut-être l'ajuster un peu.

4
LainIwakura

Il s'agit en fait d'un schéma courant qui fonctionnera. Cependant, vous voudrez peut-être réfléchir à deux fois avant de l'utiliser pour des cas plus complexes, ou pas du tout. Imaginez si quelqu'un qui maintient votre code arrive et voit

if ($x = one() || $y = two() && $z = three() or four()) {

}

Il peut être préférable de déclarer les variables avant de les utiliser au conditionnel.

4
Explosion Pills

J'ai trouvé cette interrogation sur les règles de déclaration d'une variable, puis de son utilisation immédiate dans des conditions ultérieures dans la même instruction.

Merci à la réponse précédente pour le lien du codepad, j'ai fait le mien pour tester la théorie. Alerte spoiler: ça marche.

http://codepad.org/xTwzTwGR

2
Teeks