File: logical.xml

package info (click to toggle)
php-doc 20241205~git.dfcbb86%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 70,956 kB
  • sloc: xml: 968,269; php: 23,883; javascript: 671; sh: 177; makefile: 37
file content (108 lines) | stat: -rw-r--r-- 2,758 bytes parent folder | download
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
<?xml version="1.0" encoding="utf-8"?>
<sect1 xml:id="language.operators.logical">
 <title>Logical Operators</title>
 <titleabbrev>Logic</titleabbrev>

 <table>
  <title>Logical Operators</title>
  <tgroup cols="3">
   <thead>
    <row>
     <entry>Example</entry>
     <entry>Name</entry>
     <entry>Result</entry>
    </row>
   </thead>
   <tbody>
    <row>
     <entry>$a and $b</entry>
     <entry>And</entry>
     <entry>&true; if both <varname>$a</varname> and <varname>$b</varname> are &true;.</entry>
    </row>
    <row>
     <entry>$a or $b</entry>
     <entry>Or</entry>
     <entry>&true; if either <varname>$a</varname> or <varname>$b</varname> is &true;.</entry>
    </row>
    <row>
     <entry>$a xor $b</entry>
     <entry>Xor</entry>
     <entry>&true; if either <varname>$a</varname> or <varname>$b</varname> is &true;, but not both.</entry>
    </row>
    <row>
     <entry>! $a</entry>
     <entry>Not</entry>
     <entry>&true; if <varname>$a</varname> is not &true;.</entry>
    </row>
    <row>
     <entry>$a &amp;&amp; $b</entry>
     <entry>And</entry>
     <entry>&true; if both <varname>$a</varname> and <varname>$b</varname> are &true;.</entry>
    </row>
    <row>
     <entry>$a || $b</entry>
     <entry>Or</entry>
     <entry>&true; if either <varname>$a</varname> or <varname>$b</varname> is &true;.</entry>
    </row>
   </tbody>
  </tgroup>
 </table>
 <simpara>
  The reason for the two different variations of "and" and "or"
  operators is that they operate at different precedences. (See
  <link linkend="language.operators.precedence">Operator
   Precedence</link>.)
 </simpara>
 <example>
  <title>Logical operators illustrated</title>
  <programlisting role="php">
<![CDATA[
<?php

// --------------------
// foo() will never get called as those operators are short-circuit

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// --------------------
// "||" has a greater precedence than "or"

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f before the "or" operation occurs
// Acts like: (($f = false) or true)
$f = false or true;

var_dump($e, $f);

// --------------------
// "&&" has a greater precedence than "and"

// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))
$g = true && false;

// The constant true is assigned to $h before the "and" operation occurs
// Acts like: (($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>