Heim Backend-Entwicklung PHP-Tutorial Eine Ausnahme von der Priorität des PHP-Operators

Eine Ausnahme von der Priorität des PHP-Operators

Oct 15, 2019 pm 05:10 PM
优先级 运算符

Eine Ausnahme von der Priorität des PHP-Operators

今天在老王的技术手册看到一个问题:

<?php
if ($a = 100 && $b = 200) {
     var_dump($a, $b);
}
Nach dem Login kopieren

输出是什么?

这个问题, 咋一看或许觉得简单, 但其实仔细推敲并不简单,

如果说布尔与之前的部分, 是由于优先级的问题, 但是如果仅仅是优先级的问题的话, 那么结果应该是:

$a = (100 && $b) = 200
Nach dem Login kopieren

而实际上的结果, 确实高优先级的&&让步给次优先级的=, 让 $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
Nach dem Login kopieren

最后, 顺便说一下, PHP对应于T_BOOLEAN_AND 还定义了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 这俩个的优先级都低于等号, 于是就会有了, 很多PHP入门教材示例代码中经典的:

$result = mysql_query(*)  or die(mysql_error());
Nach dem Login kopieren

类似的还可以用or来实现三元操作符(?:)的功能:

$person = $who or $person = "laruence";
//等同于:
$person = empty($who)? "laruence" : $who;
Nach dem Login kopieren

 更多PHP相关知识,请访问PHP中文网

Das obige ist der detaillierte Inhalt vonEine Ausnahme von der Priorität des PHP-Operators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann man in Windows 11 sicher eine hohe Priorität für Apps festlegen? Wie kann man in Windows 11 sicher eine hohe Priorität für Apps festlegen? May 06, 2023 pm 06:28 PM

Windows leistet hervorragende Arbeit bei der Zuweisung von Systemressourcen zu den Prozessen und Programmen, die sie am meisten benötigen, indem es ihnen Prioritäten zuweist. Die meisten Anwendungen, die Sie installieren, laufen mit der standardmäßigen „normalen“ Prioritätsstufe einwandfrei. Manchmal müssen Sie jedoch möglicherweise ein Programm, z. B. ein Spiel, auf einer höheren Stufe als der standardmäßigen normalen Stufe ausführen, um die Leistung zu verbessern. Aber das hat seinen Preis und es ist ein Deal, über den man nachdenken sollte. Was passiert, wenn Sie einer App eine hohe Priorität zuweisen? Windows verfügt über insgesamt sechs Prioritätsstufen für die Ausführung verschiedener Prozesse und Programme – niedrig, unter dem Normalwert, normal, über dem Normalwert, hoch und Echtzeit. Windows ordnet Anwendungen basierend auf ihrer Priorität und stellt sie in die Warteschlange. Je höher die Priorität, desto höher die Anwendung

Die 8 besten Möglichkeiten, Benachrichtigungen unter Windows 11 zu deaktivieren (und 3 Tipps) Die 8 besten Möglichkeiten, Benachrichtigungen unter Windows 11 zu deaktivieren (und 3 Tipps) May 05, 2023 pm 12:49 PM

Benachrichtigungen sind ein großartiges Werkzeug für die Produktivität, können aber manchmal ablenken. Egal, ob Sie Benachrichtigungen vollständig oder für ausgewählte Apps deaktivieren möchten, diese Seite ist genau das Richtige für Sie. Wir werden uns auch ansehen, wie Sie Benachrichtigungen mit FocusAssist automatisch deaktivieren und aktivieren. Wenn die Einstellungen-App nicht für Sie geeignet ist, können Sie außerdem Tools wie die Eingabeaufforderung, den Registrierungseditor und den Gruppenrichtlinien-Editor verwenden, um Benachrichtigungen auf geekigere Weise zu deaktivieren. Sehen Sie sich das folgende Tutorial an, um 7 Möglichkeiten zum Deaktivieren von Benachrichtigungen unter Windows 11 zu erfahren. Warum sollten Sie Benachrichtigungen unter Windows 11 deaktivieren? Das Deaktivieren von Benachrichtigungen hat verschiedene Vorteile, von denen einige unten aufgeführt sind. Beachten Sie jedoch, dass das Deaktivieren von Benachrichtigungen für wichtige Apps möglicherweise nicht funktioniert

So ändern Sie die Priorität im Task-Manager in Windows 11 So ändern Sie die Priorität im Task-Manager in Windows 11 May 17, 2023 am 10:26 AM

Was ist Prozesspriorität? Computer unterscheiden sich nicht so sehr von ihren Erbauern. Obwohl es den Anschein hat, dass sie Multitasking betreiben, jonglieren sie tatsächlich spontan zwischen Aufgaben. Aber nicht allen Prozessen oder Programmen werden gleichermaßen Ressourcen zugewiesen. Wichtige Prozesse, die zum Beispiel für einen möglichst reibungslosen Systemablauf notwendig sind, erhalten eine hohe Priorität, während diejenigen, die nur am Rande arbeiten, eine niedrigere Priorität erhalten können. Dies trägt dazu bei, dass das System auch bei hoher Belastung reibungslos läuft. Was hat Priorität? Prozesse haben 6 verschiedene Prioritäten. Diese lauten wie folgt: Niedrig – Dies ist die niedrigste Priorität. Ein Prozess mit „niedriger“ Priorität erhält die notwendigen Ressourcen erst, wenn alle anderen Aufgaben abgeschlossen sind. UntenNorma

So aktivieren oder deaktivieren Sie den Produktivitätsmodus für eine App oder einen Prozess in Windows 11 So aktivieren oder deaktivieren Sie den Produktivitätsmodus für eine App oder einen Prozess in Windows 11 Apr 14, 2023 pm 09:46 PM

Der neue Task-Manager in Windows 11 22H2 ist ein Segen für Power-User. Es bietet jetzt eine bessere Benutzeroberfläche mit zusätzlichen Daten, um Ihre laufenden Prozesse, Aufgaben, Dienste und Hardwarekomponenten im Auge zu behalten. Wenn Sie den neuen Task-Manager verwendet haben, ist Ihnen möglicherweise der neue Produktivitätsmodus aufgefallen. Was ist das? Trägt es dazu bei, die Leistung von Windows 11-Systemen zu verbessern? Finden wir es heraus! Was ist der Produktivitätsmodus in Windows 11? Der Produktivitätsmodus ist eine der Aufgaben im Task-Manager

Was ist der Root-Operator in der C-Sprache? Was ist der Root-Operator in der C-Sprache? Mar 06, 2023 pm 02:39 PM

In der C-Sprache gibt es keinen Root-Operator. Zum Öffnen des Roots wird die Syntax „sqrt(value x)“ verwendet. besteht darin, die Quadratwurzeloperation für 4 durchzuführen. Das Ergebnis ist 2. sqrt() ist eine integrierte Root-Operationsfunktion in der C-Sprache. Ihr Operationsergebnis ist die arithmetische Quadratwurzel der Funktionsvariablen. Diese Funktion kann weder negative Werte verarbeiten noch imaginäre Ergebnisse ausgeben.

Detaillierte Erläuterung der Methode zur Anpassung der Linux-Prozesspriorität Detaillierte Erläuterung der Methode zur Anpassung der Linux-Prozesspriorität Mar 15, 2024 am 08:39 AM

Detaillierte Erläuterung der Linux-Prozessprioritätsanpassungsmethode Im Linux-System bestimmt die Priorität eines Prozesses seine Ausführungsreihenfolge und Ressourcenzuteilung im System. Eine angemessene Anpassung der Priorität des Prozesses kann die Leistung und Effizienz des Systems verbessern. In diesem Artikel wird detailliert beschrieben, wie Sie die Priorität des Prozesses unter Linux anpassen, und es werden spezifische Codebeispiele bereitgestellt. 1. Überblick über die Prozesspriorität Im Linux-System ist jedem Prozess eine Priorität zugeordnet. Der Prioritätsbereich liegt im Allgemeinen zwischen -20 und 19, wobei -20 die höchste Priorität und 19 die höchste Priorität darstellt

So passen Sie die Benachrichtigungseinstellungen unter Windows 11 an So passen Sie die Benachrichtigungseinstellungen unter Windows 11 an May 02, 2023 pm 03:34 PM

Allgemeine Benachrichtigungseinstellungen anpassen Beginnen wir mit den Grundlagen der Benachrichtigungseinstellungen. Wenn Sie unter Windows 11 Benachrichtigungen einrichten möchten, gibt es zunächst zwei Möglichkeiten. Der schnellste Weg besteht darin, mit der rechten Maustaste auf den Datums- und Uhrzeitbereich in der Ecke der Taskleiste zu klicken und Benachrichtigungseinstellungen auszuwählen. Alternativ können Sie über das Startmenü die App „Einstellungen“ öffnen und im Abschnitt „System“ die Option „Benachrichtigungen“ auswählen (standardmäßig geöffnet). Hier sehen Sie eine Übersicht Ihrer Benachrichtigungseinstellungen. Sie können Benachrichtigungen vollständig deaktivieren oder auf die erste Option „Benachrichtigungen“ klicken, um das Dropdown-Menü zu erweitern. Dieses Menü bietet einige zusätzliche Optionen, z. B. das Deaktivieren von Benachrichtigungstönen. Sie können auch auswählen, ob Benachrichtigungen auf dem Sperrbildschirm angezeigt werden sollen, einschließlich spezifischer Einstellungen für Erinnerungen und eingehende Anrufe.

Golang-Fehler: „Ungültige Verwendung des ...-Operators' Wie kann man ihn lösen? Golang-Fehler: „Ungültige Verwendung des ...-Operators' Wie kann man ihn lösen? Jun 24, 2023 pm 05:54 PM

Für Golang-Entwickler ist „invaliduseof...operator“ ein häufiger Fehler. Dieser Fehler tritt normalerweise auf, wenn Parameterfunktionen variabler Länge verwendet werden. Es wird zur Kompilierungszeit erkannt und zeigt an, bei welchen Teilen Probleme auftreten. In diesem Artikel erfahren Sie, wie Sie diesen Fehler beheben können. 1. Was ist eine Parameterfunktion variabler Länge? Eine Parameterfunktion variabler Länge wird in der Golang-Sprache auch als Funktion variabler Parameter bezeichnet. Mithilfe von Parameterfunktionen variabler Länge können Sie mehrere Funktionen wie folgt definieren:

See all articles