50 votes

PHP : Vérifier si une variable existe mais aussi si elle a une valeur égale à quelque chose.

J'ai (ou pas) une variable $_GET['myvar'] provenant de ma chaîne de requête et je veux vérifier si cette variable existe et aussi si la valeur correspond à quelque chose dans mon instruction if :

Ce que je fais et pense n'est pas la meilleure façon de faire :

if(isset($_GET['myvar']) && $_GET['myvar'] == 'something') : faire quelque chose

Ma question est la suivante : existe-t-il un moyen de faire cela sans déclarer deux fois la variable ?

C'est un cas simple mais imaginez qu'il faille comparer plusieurs de ces cas. $myvar variables.

3 votes

PHP n'a pas de solution pour cela, mais c'est un langage de programmation. Vous pouvez (et devriez) toujours écrire un sous-programme pour raccourcir un code répétitif. Sans oublier que dans un bon programme, chaque variable doit être définie avant d'être utilisée...

0voto

keithics Points 1155
<?php

function myset(&$var,$value=false){
    if(isset($var)):
        return $var == $value ? $value : false;
    endif;
    return false;
}

$array['key'] = 'foo';

var_dump(myset($array['key'],'bar')); //bool(false)

var_dump(myset($array['key'],'foo'));//string(3) "foo"

var_dump(myset($array['baz'],'bar'));//bool(false)

-1voto

DanMan Points 3499

Eh bien, vous pourriez vous en sortir avec juste if($_GET['myvar'] == 'something') puisque cette condition présume que la variable existe également. Si ce n'est pas le cas, l'expression donnera également comme résultat false .

Je pense qu'il est possible de le faire dans des déclarations conditionnelles comme ci-dessus. Il n'y a pas de mal à cela.

-3voto

zafer Points 1

Pas de référence officielle mais cela a fonctionné quand j'ai essayé ceci :

if (isset($_GET['myvar']) == 'something')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X