2011-03-07 4 views
0

J'ai quelque chose comme ceci:PHP attribuer une valeur à une variable de IF LaVariable

$msg = ''; 
$var1 = 'image'; 
$var2 = 'class'; 
$var3 = 'This '.$var1.' has this class assigned:'.$var2; 

if($E == 0) { 
    $msg = $var3; 
} else { 
    $var1 = 'no image'; 
    $var2 = 'no class'; 
    $msg = $var3; 
}; 

echo $msg; 

Je veux être en mesure de montrer var3 $ avec les résultats modifiés mais il ne fonctionne pas ... Remerciez vous pour vos réponses, mais je pense que je dois préciser

Désolé de la confusion ..

le problème est pas à la valeur de test ($ E == 0) .. Mon problème est que dans les deux cas, la le résultat sera le même et $ var1 et $ var2 ne changeront pas ...Les résultats dans les deux cas seront les mêmes: echo $ msg; produira « Cette image a cette classe attribuée: classe »

Je pense est à cause de la composition de var3 $ en dehors du cas et ne peut être changé à l'intérieur de l'instruction IF ..

+0

La formation de votre code serait utile. – powtac

+0

si vous vérifiez si le nombre a une valeur dans le POST alors vous devez utiliser 'empty()' – kjy112

Répondre

2

vous devez écrire une fonction

function var3($v1,$v2) 
{ 
    return 'This '.$v1.' has this class assigned:'.$v2; 
} 

utiliser cette fonction de cette façon:

$msg=''; 
$var1='image'; 
$var2='class'; 
$var3=var3($var1,$var2); 
if($_POST['number']) {$msg=$var3;} 
    else 
     { 
     $var1='no image'; 
     $var2='no class'; 
     $msg=var3($var1,$var2); 
     }; 

echo $msg; 
+0

Vous avez une faute de frappe dans la fonction var3() .. Vous utilisez $ 1 et $ 2 au lieu de $ v1 et $ v2. – smottt

+0

Je vais essayer cette approche et voir si cela fonctionne – Bogdan

+0

C'est la façon dont je me suis retrouvé. C'était évident mais la réponse m'a échappé :) Merci à tous! pour aider – Bogdan

0

utiliser si la condition:

if (isset($_POST['number']) AND strlen($_POST['number'])) { 
... 
3

Peut-être quelque chose comme ceci:

if($_POST['number']) { 
    $var1 = 'image'; 
    $var2 = 'class'; 
} else { 
    $var1 = 'no image'; 
    $var2 = 'no class'; 
} 

echo 'This ' . $var1 . ' has this class assigned: ' . $var2; 
+0

Merci cela fonctionnera mais pas comme je le veux. J'ai besoin d'utiliser une 3ème variable et de réduire l'ammount du code – Bogdan

+0

Remplacez simplement echo par $ var3 comme ceci -> '$ var3 = 'This'. $ var1. 'a cette classe assignée:'. $ var2; 'et ça devrait marcher comme tu veux. – smottt

0

Utilisez quelque chose comme ceci:

if(empty($_POST['number'])) { 
    $var1='no image'; 
    $var2='no class'; 
} else { 
    $var1='image'; 
    $var2='class'; 
} 

echo sprintf('This %s has this class assigned:%s', $var1, $var2); 

sprintf est amusant! (Et utile)

0

Vous pouvez utiliser sprintf pour obtenir ce que vous voulez:

$var1='image'; 
$var2='class'; 
$format ='This %s has this class assigned: %s'; 

if(! isset($_POST['number']) || ! $_POST['number']) { 
    $var1='no image'; 
    $var2='no class'; 
}; 

$msg = sprintf($format, $var1, $var2); 

Je pris la liberté d'améliorer un peu votre condition aussi.

0

ici la solution pour votre problelem

$ msg = '';

$ var1 = 'image';

$ var2 = 'classe';

$ var3 = 'Ceci'. $ Var1. ' a cette classe assignée: '. $ var2;

if ($ _ POST [ 'nombre']) {

$msg=$var3; 

} else {

$var1='no image'; 

$var2='no class'; 

$var3='This '.$var1.' has this class assigned:'.$var2; 

$msg=$var3; 

};

echo $ msg;

Questions connexes