8
votes

Les opérateurs logiques de PHP fonctionnent-ils comme JavaScript?

Une des choses que j'aime la plupart de JavaScript est que les opérateurs logiques sont très puissants:

  • && code> peut être utilisé pour extraire en toute sécurité la valeur d'un champ d'un objet et retournera NULL si l'objet ou le champ n'a pas été initialisé P>

    // set param to its default value
    param = param || defaultValue;
    
  • || code> peut être utilisé pour définir les valeurs par défaut: p>

    // returns null if param, param.object or param.object.field
    // have not been set
    field = param && param.object && param.object.field;
    


1 commentaires

Non, ils agissent comme des opérateurs d'expression booléenne, vous reviendrez vrai ou faux.


4 Réponses :


9
votes

Les opérateurs logiques PHP ne retournent pas la valeur de l'un de leurs côtés: ils vous obtiendront toujours un booléen.

Par exemple, faire: xxx

sera toujours Faire $ résultat contient un booléen: true ou false - et jamais $ a $ b $ b .


0 commentaires

17
votes

PHP renvoie true ou false . Mais vous pouvez imiter r = a || B || C avec: xxx

concernant "ands", quelque chose comme: xxx


2 commentaires

J'allais poster la même chose. Notez que cette fonctionnalité existe sur PHP 5.3.


Wow. C'est bien de voir PHP prend en charge le de GCC ?: idiome. Et j'utilise php 5.3.5.



2
votes

Vous pouvez configurer une fonctionnalité similaire à l'aide de Terne opérateurs .


0 commentaires

1
votes

révisé :

En ce qui concerne Logical anding en PHP pour obtenir le même genre de résultat que JavaScript, vous pouvez utiliser une variante du ternaire traditionnel, comme suit: < Pré> xxx

voir code live

"ELVIS" opérateur "?:" n'attribue que le résultat au champ $ si l'expression conditionnelle est fausse. Donc, si $ paramètre existe aussi bien que $ param-> objet, vous devez utiliser l'opérateur non ("!") Afin d'obtenir le résultat souhaité.

Vous pouvez également accomplir l'objectif d'obtenir les données de champ sans anding en utilisant l'opérateur de coalescence null ("??") dans PHP 7 en tandem avec get_Object_vars () .


0 commentaires