2012-09-04 5 views
4

possible en double:
'AND' vs '&&' as operatorPHP différence opérateur && et "et"

Désolé pour très question fondamentale mais je commencé à apprendre PHP il y a juste une semaine & n'a pas pu trouver une réponse à cette question sur google/stackoverflow.

Je suis passé par programme ci-dessous:

$one = true; 
$two = null; 
$a = isset($one) && isset($two); 
$b = isset($one) and isset($two); 

echo $a.'<br>'; 
echo $b; 

Sa sortie est:

false 
true 

Je lis & &/et sont les mêmes. En quoi le résultat est-il différent pour les deux? Quelqu'un peut-il dire la vraie raison s'il vous plaît?

Répondre

13

La raison est operator precedence. Parmi les trois opérateurs que vous avez utilisé &&, and & =, l'ordre de priorité est

  • &&
  • =
  • and

Alors $a dans votre programme calculé comme prévu, mais pour $b, déclaration $b = isset($one) était calculé en premier, donnant un résultat inattendu. Il peut être réparé comme suit.

$b = (isset($one) and isset($two)); 
+1

+1 Ajout d'un lien vers Docs. –

0

S'il vous plaît voir: http://www.php.net/manual/en/language.operators.logical.php

Il explique que « et » est différent de « & & » en ce que l'ordre des opérations est différent. L'affectation arrive en premier dans ce cas. Donc, si vous deviez faire:

$b = (isset($one) and isset($two)); 

Vous obtiendrez le résultat attendu.

1

comment le groupe Cest l'opérateur a lieu

$one = true; 
$two = null; 
$a = (isset($one) && isset($two)); 
($b = isset($one)) and isset($two); 

echo $a.'<br>'; 
echo $b; 

C'est pourquoi son retour faux pour la première et vraie pour la deuxième.

Questions connexes