2012-11-07 17 views
5
if($_POST['user_admin'] = 0){ $acct_type = "a standard"; } 
elseif($_POST['user_admin'] = 1){ $acct_type = "an administrator"; } 
echo $acct_type; 
echo $_POST['user_admin']; 

Sia $_POST['user_admin'] è 0 o 1, $acct_type restituisce ancora "un amministratore" Perché?

+10

Sostituire '=' con '' == .... anche guardare http://www.php.net /manual/en/language.operators.comparison.php – Baba

+0

possibile duplicato di [I 3 diversi uguali] (http://stackoverflow.com/questions/2063480/the-3-different-equals) – mario

+0

Grazie! A volte ti manca qualcosa dopo averla fissata per 10 minuti ... – GiantDuck

risposta

10

È necessario utilizzare "==" quando si confrontano le variabili.

if($_POST['user_admin'] == 0){ $acct_type = "a standard"; } 
elseif($_POST['user_admin'] == 1){ $acct_type = "an administrator"; } 
echo $acct_type; 
echo $_POST['user_admin']; 
6

Dovrebbe essere

if $variable == 0 
2

Sei il primo di 10 common PHP mistakes to avoid :-)

$_POST['user_admin'] = 0 
    $_POST['user_admin'] = 1 

sono entrambi assegnazioni. PHP valuta se l'espressione finale assegnata è vera o falsa dopo aver assegnato il valore a $ _POST ['user_admin']. Quindi, il primo verrà valutato come falso poiché il valore assegnato è 0 e il secondo verrà valutato come true poiché il valore assegnato è 1.

Come tutti hanno sottolineato, è necessario utilizzare "==" invece di "=" per le istruzioni condizionali.

2

si sta assegnando valore con = si dovrebbe usare $ == variabile da 0 a confrontare il valore

Problemi correlati