2010-04-24 9 views
2

Les deux valeurs sont '2' mais je ne reçois pas de vrai. Pourquoi?Pourquoi '==' ne fonctionne pas en PHP?

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
    if ($getuser == $userurl) { 
     echo "true <br />"; 
    } 

Résultat

2 
2 
+0

Je ne sais pas php, mais peut-être l'un d'entre eux est une chaîne et l'autre un entier? – house9

+0

@ house9: PHP va les convertir aux mêmes types pour les vérifier pour '==', vous devez utiliser '===' pour faire une comparaison spécifique au type. – animuson

+0

Si le code ci-dessus commence par $ getuser = 2 et $ geturl = 2, auriez-vous une réponse vraie? – Smandoli

Répondre

1

Lorsque je tente

$getuser = 2; 
$userurl = 2; 

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
if ($getuser == $userurl) { 
    echo "true <br />"; 
} 

Résultats:

2 
2 
true 

Works pour moi. Sur XAMPP (Windows) et Linux (Apache). Donc, il y a problème probablement quelque part dans la configuration ou quelque chose ...

4

Au lieu de les faisant écho à, utilisez var_dump() pour voir exactement ce qui est stocké dans les variables:

var_dump($getuser); echo "<br />"; 
var_dump($userurl); echo "<br />"; 
+0

Je reçois 'string (1) "2" string (7) "2"' – patrick

+0

ok je sais d'où ils viennent. Je dépouille une URL de '/ users/3104' à '3104' alors je me débarrasse de 7 caractères en utilisant '$ userurl = substr ($ users [' url '], 7). "
"; ' J'ai essayé d'utiliser trim ($ userurl, "\ 0") pour se débarrasser des octets NULL, mais cela ne fonctionne pas. – patrick

+2

trouvé la solution: '$ userurl = ltrim ($ users [' url '], "users /");' Merci! – patrick

4

Vous avez probablement des espaces parasites ou d'autres caractères qui ne sont pas faciles, ou peut-être pas possible de détecter visuellement.

utilisation

var_dump($getuser); 
var_dump($userurl); 

d'attention à la longueur de la chaîne. Pensez à utiliser trim() si nécessaire

+0

+1 pour appeler spécifiquement les espaces. C'était aussi mon intuition. –

3

peut contenir de l'espace factice dans cela, utilisez comme celui-ci

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
    if (trim($getuser) == trim($userurl)) { 
     echo "true <br />"; 
    }