Une exception à la priorité des opérateurs PHP
今天在老王的技术手册看到一个问题:
<?php if ($a = 100 && $b = 200) { var_dump($a, $b); }
输出是什么?
这个问题, 咋一看或许觉得简单, 但其实仔细推敲并不简单,
如果说布尔与之前的部分, 是由于优先级的问题, 但是如果仅仅是优先级的问题的话, 那么结果应该是:
$a = (100 && $b) = 200
而实际上的结果, 确实高优先级的&&让步给次优先级的=, 让 $b = 200 先结合了.
究其原因, 是因为PHP并不完全遵守优先级的定义, 这个在PHP的手册中也有说明:
Note: Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.
这样的设计, 个人不发表看法, 反正在C语言中, 这样类似的语句是判定为语法错的. PHP采用这样的设计, 很可能是历史原因,
有好奇的同学, 会想知道到底为什么, 之前jayeeliu网友也问过:
laruence你好:
问一个php运算符优先级的问题
$t == 1 && $tt = 2
按照php运算符优先级应该是
(($t == 1) && $tt) = 2
这个顺序执行,但实际上应该是
($t == 1) && ($tt = 2)
我有些不太理解。
其实也简单, 运算符优先级是在存在二义性文法的时候的一种规约规则选择的手段, 而PHP的语法分析文件定义中, 却让等号和T_BOOLEAN_AND(&&)之前不存在了规约冲突:
expr_without_variable: // 有隐规则存在, 相当于T_BOOLEAN_AND成为了"一元操作符". | expr T_BOOLEAN_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr
最后, 顺便说一下, PHP对应于T_BOOLEAN_AND 还定义了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 这俩个的优先级都低于等号, 于是就会有了, 很多PHP入门教材示例代码中经典的:
$result = mysql_query(*) or die(mysql_error());
类似的还可以用or来实现三元操作符(?:)的功能:
$person = $who or $person = "laruence"; //等同于: $person = empty($who)? "laruence" : $who;
更多PHP相关知识,请访问PHP中文网!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Windows fait un excellent travail en allouant des ressources système aux processus et aux programmes qui en ont le plus besoin en leur attribuant des priorités. La plupart des applications que vous installez fonctionneront parfaitement au niveau de priorité « normal » par défaut. Parfois, cependant, vous devrez peut-être exécuter un programme, tel qu'un jeu, à un niveau supérieur au niveau normal par défaut pour améliorer ses performances. Mais cela a un coût, et c’est une affaire qui mérite réflexion. Que se passe-t-il lorsque vous définissez une application comme étant prioritaire ? Windows dispose d'un total de six niveaux de priorité pour l'exécution de différents processus et programmes : faible, inférieur à la normale, normal, supérieur à la normale, élevé et en temps réel. Windows classera et mettra les applications en file d'attente en fonction de leur priorité. Plus la priorité est élevée, plus l'application

Les notifications sont un excellent outil de productivité, mais elles peuvent parfois être distrayantes. Que vous souhaitiez désactiver complètement les notifications ou pour certaines applications, cette page est ce dont vous avez besoin. Nous verrons également comment désactiver et activer automatiquement les notifications à l'aide de FocusAssist. De plus, si l'application Paramètres n'est pas pour vous, vous pouvez utiliser des outils tels que l'invite de commande, l'éditeur de registre et l'éditeur de stratégie de groupe pour une manière plus geek de désactiver les notifications. Consultez le didacticiel suivant pour découvrir 7 façons de désactiver les notifications sur Windows 11. Pourquoi devriez-vous désactiver les notifications sur Windows 11 ? La désactivation des notifications présente divers avantages, dont certains sont répertoriés ci-dessous. Cependant, gardez à l'esprit que la désactivation des notifications pour les applications importantes peut

Quelle est la priorité du processus ? Les ordinateurs ne sont pas si différents de leurs créateurs. Même s’ils semblent être multitâches, en réalité, ils jonglent spontanément entre les tâches. Mais tous les processus ou programmes ne bénéficient pas de ressources allouées de manière égale. Les processus importants, tels que ceux nécessaires au bon fonctionnement du système, reçoivent une priorité élevée, tandis que ceux qui ne fonctionnent que de manière périphérique peuvent se voir attribuer une priorité moindre. Cela permet au système de fonctionner correctement, même lorsqu’il est soumis à de fortes contraintes. Quelle est la priorité ? Les processus ont 6 priorités différentes. Celles-ci sont les suivantes : Faible – Il s'agit de la priorité la plus basse. Un processus avec une priorité « faible » ne recevra pas les ressources nécessaires tant que toutes les autres tâches ne seront pas terminées. Ci-dessousNorma

Le nouveau gestionnaire de tâches de Windows 11 22H2 est une aubaine pour les utilisateurs expérimentés. Il offre désormais une meilleure expérience d'interface utilisateur avec des données supplémentaires pour garder un œil sur vos processus, tâches, services et composants matériels en cours d'exécution. Si vous utilisez le nouveau Gestionnaire des tâches, vous avez peut-être remarqué le nouveau mode de productivité. qu'est-ce que c'est? Cela contribue-t-il à améliorer les performances des systèmes Windows 11 ? Découvrons-le ! Qu’est-ce que le mode productivité dans Windows 11 ? Le mode productivité est l'une des tâches du Gestionnaire des tâches

Dans le langage C, il n'y a pas d'opérateur racine. La fonction intégrée « sqrt() » est utilisée pour ouvrir la racine, et la syntaxe « sqrt(value x) » est utilisée par exemple, « sqrt(4) » ; consiste à effectuer l'opération racine carrée sur 4. , le résultat est 2. sqrt() est une fonction d'opération racine intégrée en langage C. Son résultat d'opération est la racine carrée arithmétique de la variable de fonction ; cette fonction ne peut ni opérer de valeurs négatives ni produire de résultats imaginaires.

Personnalisation des paramètres généraux de notification Commençons par les bases des paramètres de notification. Premièrement, si vous souhaitez configurer des notifications sur Windows 11, il existe deux manières de procéder. Le moyen le plus rapide consiste à cliquer avec le bouton droit sur la partie date et heure dans le coin de la barre des tâches et à sélectionner Paramètres de notification. Vous pouvez également utiliser le menu Démarrer pour ouvrir l'application Paramètres et sélectionner Notifications dans la section Système (ouverte par défaut). Ici, vous verrez un aperçu de vos paramètres de notification. Vous pouvez désactiver complètement les notifications ou cliquer sur la première option, Notifications, pour développer le menu déroulant. Ce menu propose des options supplémentaires, telles que la désactivation des sons de notification. Vous pouvez également choisir si vous souhaitez que les notifications apparaissent sur l'écran de verrouillage, y compris des paramètres spécifiques pour les rappels et les appels entrants.

Pour les développeurs Golang, « invaliduseof...operator » est une erreur courante. Cette erreur se produit généralement lors de l’utilisation de fonctions de paramètres de longueur variable. Il sera détecté au moment de la compilation et indiquera quelles parties ont des problèmes. Cet article explique comment résoudre cette erreur. 1. Qu'est-ce qu'une fonction paramètre de longueur variable ? Une fonction paramètre de longueur variable, également connue sous le nom de fonction paramètre de longueur variable, est un type de fonction dans le langage Golang. À l'aide de fonctions de paramètres de longueur variable, vous pouvez définir plusieurs

Explication détaillée de la méthode d'ajustement de la priorité des processus Linux. Dans le système Linux, la priorité d'un processus détermine son ordre d'exécution et l'allocation des ressources dans le système. Un ajustement raisonnable de la priorité du processus peut améliorer les performances et l'efficacité du système. Cet article présentera en détail comment ajuster la priorité du processus sous Linux et fournira des exemples de code spécifiques. 1. Présentation de la priorité des processus Dans le système Linux, chaque processus est associé à une priorité. La plage de priorité va généralement de -20 à 19, où -20 représente la priorité la plus élevée et 19 représente
