/
logical.xml
127 lines (117 loc) · 3.21 KB
/
logical.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 43d07782b514d0c7a8487f2c74063739f302df8d Maintainer: nobody Status: ready -->
<!-- Reviewed: yes -->
<!-- Rev-Revision: e4b889a3e8b9d87ab605aac9bbe85d2c16c69a1b Reviewer: samesch -->
<!-- CREDITS: tzwenny, betz -->
<sect1 xml:id="language.operators.logical">
<title>Logische Operatoren</title>
<titleabbrev>Logik</titleabbrev>
<table>
<title>Logische Operatoren</title>
<tgroup cols="3">
<thead>
<row>
<entry>Beispiel</entry>
<entry>Name</entry>
<entry>Ergebnis</entry>
</row>
</thead>
<tbody>
<row>
<entry>$a and $b</entry>
<entry>Und</entry>
<entry>
&true; wenn sowohl <varname>$a</varname> als auch <varname>$b</varname>
&true; ist.
</entry>
</row>
<row>
<entry>$a or $b</entry>
<entry>Oder</entry>
<entry>
&true; wenn <varname>$a</varname> oder <varname>$b</varname> &true; ist.
</entry>
</row>
<row>
<entry>$a xor $b</entry>
<entry>Entweder Oder</entry>
<entry>
&true; wenn entweder <varname>$a</varname> oder <varname>$b</varname>
&true; ist, aber nicht beide.
</entry>
</row>
<row>
<entry>! $a</entry>
<entry>Nicht</entry>
<entry>&true; wenn <varname>$a</varname> nicht &true; ist.</entry>
</row>
<row>
<entry>$a && $b</entry>
<entry>Und</entry>
<entry>
&true; wenn sowohl <varname>$a</varname> als auch <varname>$b</varname>
&true; ist.
</entry>
</row>
<row>
<entry>$a || $b</entry>
<entry>Oder</entry>
<entry>
&true; wenn <varname>$a</varname> oder <varname>$b</varname> &true;
ist.
</entry>
</row>
</tbody>
</tgroup>
</table>
<simpara>
Der Grund dafür, dass es je zwei unterschiedliche Operatoren für die "Und"-
und die "Oder"-Verknüpfung gibt, ist der, dass die beiden Operatoren
unterschiedliche Rangfolgen haben. (siehe auch
<link linkend="language.operators.precedence">Operator-Rangfolge</link>.)
</simpara>
<example>
<title>Logische Operatoren erklärt</title>
<programlisting role="php">
<![CDATA[
<?php
// --------------------
// foo() wird nie aufgerufen werden, da die Operatoren Kurzschlussauswertung verwenden
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// --------------------
// "||" hat eine höhere Rangfolge als "or"
// Das Ergebnis des Ausdrucks (false || true) wird $e zugewiesen
// Funktioniert wie: ($e = (false || true))
$e = false || true;
// Die Konstante "false" wird $f zugewiesen bevor die "or" Operation
// durchgeführt wird
// Funktioniert wie: (($e = false) or true)
$f = false or true;
var_dump($e, $f);
// --------------------
// "&&" hat eine höhere Rangfolge als "and"
// Das Ergebnis des Ausdrucks (true && false) wird $g zugewiesen
// Funktioniert wie: ($g = (true && false))
$g = true && false;
// Die Konstante "true" wird $h zugewiesen bevor die "and" Operation
// durchgeführt wird
// Funktioniert wie: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
bool(true)
bool(false)
bool(false)
bool(true)
]]>
</screen>
</example>
</sect1>