<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://safernicotine.wiki/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Help%3AConditional_expressions</id>
	<title>Help:Conditional expressions - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://safernicotine.wiki/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Help%3AConditional_expressions"/>
	<link rel="alternate" type="text/html" href="https://safernicotine.wiki/mediawiki/index.php?title=Help:Conditional_expressions&amp;action=history"/>
	<updated>2026-05-11T01:08:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://safernicotine.wiki/mediawiki/index.php?title=Help:Conditional_expressions&amp;diff=22713&amp;oldid=prev</id>
		<title>Richardpruen: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://safernicotine.wiki/mediawiki/index.php?title=Help:Conditional_expressions&amp;diff=22713&amp;oldid=prev"/>
		<updated>2022-01-02T17:20:30Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:20, 2 January 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key uk_vapewiki:diff:1.41:old-22712:rev-22713 --&gt;
&lt;/table&gt;</summary>
		<author><name>Richardpruen</name></author>
	</entry>
	<entry>
		<id>https://safernicotine.wiki/mediawiki/index.php?title=Help:Conditional_expressions&amp;diff=22712&amp;oldid=prev</id>
		<title>Wikipedia&gt;Plastikspork: /* See also */ Deleted</title>
		<link rel="alternate" type="text/html" href="https://safernicotine.wiki/mediawiki/index.php?title=Help:Conditional_expressions&amp;diff=22712&amp;oldid=prev"/>
		<updated>2021-11-21T16:56:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;See also: &lt;/span&gt; Deleted&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{for|more detailed instructions|mw:Help:Extension:ParserFunctions}}&lt;br /&gt;
{{Wikipedia how-to|H:CONEX|H:CX}}&lt;br /&gt;
This page, &amp;#039;&amp;#039;&amp;#039;Help:Conditional expressions&amp;#039;&amp;#039;&amp;#039;, describes ways to display different results based on checking conditions in a page or [[Help:Template|template]]. The [[wp:parser functions|parser functions]] used to evaluate [[conditional expression]]s include the function names: [[#ifexpr|&amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt;]], [[#ifeq|&amp;lt;code&amp;gt;#ifeq&amp;lt;/code&amp;gt;]], [[#switch|&amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt;]], [[#if|&amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt;]], and [[#iferror|&amp;lt;code&amp;gt;#iferror&amp;lt;/code&amp;gt;]] or [[#ifexist|&amp;lt;code&amp;gt;#ifexist&amp;lt;/code&amp;gt;]]. Each function name has been linked to the explanations below.&lt;br /&gt;
&lt;br /&gt;
*Using &amp;lt;code&amp;gt;#ifeq&amp;lt;/code&amp;gt; can compare 2 strings or numbers.&lt;br /&gt;
*But &amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt; can check a math formula or multiple conditions. &lt;br /&gt;
*The &amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt; function can branch to dozens or hundreds of different paths depending on a value, to act as a [[case statement]] to choose among alternatives.&lt;br /&gt;
*Using &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; can check to see if a parameter has been passed, or if an expression evaluates as true. &lt;br /&gt;
*Using &amp;lt;code&amp;gt;#iferror&amp;lt;/code&amp;gt; can check to see if an expression value triggers an error else shows the value.&lt;br /&gt;
* While &amp;lt;code&amp;gt;#ifexist&amp;lt;/code&amp;gt; can check to see if a page name or image/media file exists yet.&lt;br /&gt;
&lt;br /&gt;
Note that all extra white space within the outer braces gets stripped out, so this permits formatting these constructs for better readability. For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#if: {{{xx|}}}&lt;br /&gt;
   | parameter xx passed&lt;br /&gt;
   | parameter xx omitted&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Only the spaces on either side of the xx appear in the text.&lt;br /&gt;
&lt;br /&gt;
== Summary of conditional expressions ==&lt;br /&gt;
The quick format of each function is as follows (you can see function examples bellow): &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#if:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;test string&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if non-empty&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if empty&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects one of two values based on whether the test string is empty)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;string 1&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;string 2&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if equal&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if unequal&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects one of two values based on whether the test strings are equal – numerically if applicable)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;test string&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if error&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if correct&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects value based on whether the test string generates a parser error)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;expression&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if true&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if false&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects value based on evaluation of expression)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexist:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;page title&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if exists&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if doesn&amp;#039;t exist&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects value depending on whether a page title exists)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#switch:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;test&amp;#039;&amp;#039; | &amp;#039;&amp;#039;case1&amp;#039;&amp;#039; = &amp;#039;&amp;#039;value for case 1&amp;#039;&amp;#039; | ... | &amp;#039;&amp;#039;default&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (provides alternatives based on the value of the test string; see [[test case]]s.)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#expr:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;expression&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (evaluates the given expression; see [[Help:Calculation]])&lt;br /&gt;
&lt;br /&gt;
The [[Help:Magic words|magic words]] can be used together, in nested combinations, to branch on complex conditions. Some combinations can use tricks based on the interactions between them.&lt;br /&gt;
&lt;br /&gt;
Note that with &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; expressions, using a [[positional parameter]], this is, a parameter in the form &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{{1}}}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; always requires a final [[vertical bar]] &amp;lt;code&amp;gt;&amp;quot;|&amp;quot;&amp;lt;/code&amp;gt; in the parameter: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{{1|}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. If the bar/pipe is omitted, then whenever the parameter 1 is absent, instead of leaving the field blank, the page will use the literal text &amp;quot;&amp;lt;code&amp;gt;{{{1}}}&amp;lt;/code&amp;gt;&amp;quot; (as 3 sets of curly braces around a &amp;quot;1&amp;quot;), and the &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; will be true unless parameter 1 is passed as an empty string, such as &amp;quot;1=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;if&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; ==&lt;br /&gt;
{{tsa|if}}&lt;br /&gt;
Using &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; can check whether a parameter has been passed.&lt;br /&gt;
&lt;br /&gt;
This function evaluates a test string and determines whether or not it is empty. A test string containing only white space is considered to be empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#if:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;test string&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if test string is not empty&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if test string is empty (or only white space)&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=moin&amp;gt;{{#if: {{{1|}}}&lt;br /&gt;
   | parameter 1 has data&lt;br /&gt;
   | parameter 1 is empty or omitted&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{xx|}}}&lt;br /&gt;
   | parameter xx passed&lt;br /&gt;
   | parameter xx is empty or omitted&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{xx|}}}{{{yy|}}}&lt;br /&gt;
   | xx and/or yy passed&lt;br /&gt;
   | both xx and yy are empty/omitted&lt;br /&gt;
}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;ifeq&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#ifeq&amp;lt;/code&amp;gt; ==&lt;br /&gt;
{{Template see also|ifeq}}&lt;br /&gt;
Using &amp;lt;code&amp;gt;#ifeq&amp;lt;/code&amp;gt; can compare 2 [[String (computer science)|strings]] or numbers (but not [[numeric expression]]s: 1+1). The parser function &amp;lt;code&amp;gt;#ifeq&amp;lt;/code&amp;gt; compares two values and determines whether they are identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;string 1&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;string 2&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if identical&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if different&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
If both strings are valid numerical values, the strings are compared as numbers, rather than literal text:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: 01 | 1 | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: 01 | 1 | equal | not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: x01 | x1 | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: x01 | x1 | equal | not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: 2.000 | 002 | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: 2.000 | 002 | equal | not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: 2.5 | 2+.5 | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: 2.5 | 2+.5 | equal | not equal}}&amp;#039;&amp;#039;&amp;#039; (use &amp;lt;code&amp;gt;[[#ifexpr]]&amp;lt;/code&amp;gt; for arithmetic)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The comparison is [[case-sensitive]], checking to match capital letters:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: King | king | equal | not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: King | king | equal | not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{lc:TopCat}} | topcat |equal|not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: {{lc:TopCat}} | topcat |equal|not equal}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{lc:{{{catname}}} }} | topcat |equal|not equal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, when checking the value of a parameter named &amp;quot;&amp;lt;code&amp;gt;{{{catname}}}&amp;lt;/code&amp;gt;&amp;quot; then the function &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{lc:___}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used to instantly convert to lowercase text, during the comparison. The value of &amp;lt;code&amp;gt;{{{catname}}}&amp;lt;/code&amp;gt; will not be changed for later use, instead it is only compared as lowercase letters.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{{n}}} | 1 | singular | plural}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: {{{n}}} | 1 | singular | plural}}&amp;#039;&amp;#039;&amp;#039; (For most languages, including English, {{tlg|Plural|{{space}}lang{{=}}xx {{space}}|{{space}} {{{n}}} {{space}}|{{space}} singular {{space}}| plural{{space}} }} is exactly equivalent ).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;ifexpr&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Using &amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt; can check a math formula or multiple conditions.&lt;br /&gt;
The parser function &amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt; evaluates a &amp;#039;&amp;#039;&amp;#039;mathematical expression&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;[[boolean expression]]&amp;#039;&amp;#039;&amp;#039; and branches depending on the boolean true/false value of the result (where zero means &amp;#039;&amp;#039;false&amp;#039;&amp;#039;):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;expression&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if true&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if false&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Examples:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: ( {{{1}}}+{{{2}}} ) * 2.63 &amp;gt; 45 |above 45 |not above 45}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: {{{1}}} &amp;gt; 0 and {{{1}}} &amp;lt; 1.0 or {{#ifeq:{{{decimal}}}| yes}} |is decimal |not decimal}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;#039;&amp;#039;expression&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; result is evaluated exactly in the same manner as for function [[#expr|&amp;lt;code&amp;gt;#expr&amp;lt;/code&amp;gt;]], with the same operators being available. The output is then evaluated as a boolean expression.&lt;br /&gt;
&lt;br /&gt;
An empty input expression evaluates to false:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: | yes | no}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifexpr: | yes | no}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
As mentioned above, zero evaluates to false and any nonzero value (such as 6.7) evaluates to true.&lt;br /&gt;
&lt;br /&gt;
Invalid data will display an error message. However, function &amp;lt;code&amp;gt;#ifexpr&amp;lt;/code&amp;gt; is equivalent to using &amp;lt;code&amp;gt;[[#ifeq]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[#expr]]&amp;lt;/code&amp;gt; inside, but flipping the true/false (then/else) clauses:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{#expr: &amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;expression&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt; }} | 0 | &amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;value if false&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if true&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An invalid or wrong input expression will trigger the true-value part (an error message is treated as an ordinary string; it is not equal to zero, so we get &amp;lt;code&amp;gt;&amp;#039;&amp;#039;value if false&amp;#039;&amp;#039;&amp;lt;/code&amp;gt;).&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: = | yes | no }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Expression error: Unexpected = operator&amp;lt;/strong&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifeq: {{#expr: = }} |0 | yes | no }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifeq: {{#expr: = }} |0 | yes | no }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Either or both of the return values may be omitted; no output is given when the appropriate branch is left empty:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: 1 &amp;gt; 0 | yes }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#ifexpr: 1 &amp;gt; 0 | yes }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: 0 = 0 | yes }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039; {{#ifexpr: 0 = 0 | yes }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexpr: 1 &amp;gt; 0 | | no}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039; {{#ifexpr: 1 &amp;gt; 0 | | no}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{tip|tip=To check comparisons based on dates (If current date and time is after some other date and time), first convert the time to number of seconds after January 1, 1970 using function [[Help:Time function|&amp;lt;nowiki&amp;gt;{{#time: U }}&amp;lt;/nowiki&amp;gt;]], then simply add and subtract dates.}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;switch&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt; function can branch to dozens or hundreds of different paths depending on a value, to act as a [[case statement]] which chooses among alternatives. A &amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt; expression is a quick way to handle multiple code values for a parameter, without using lots of &amp;lt;code&amp;gt;#if&amp;lt;/code&amp;gt; functions; however, the performance slows when more than 100 branches, and common values should be listed higher among the choices, to run 3x-8x faster. In rare cases, a &amp;lt;code&amp;gt;#switch&amp;lt;/code&amp;gt; could have over two thousand branches, but it takes time just to scan all the branches, even before comparing the values.&lt;br /&gt;
&lt;br /&gt;
The {{mono|#switch}} function can be a one-line form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=moin&amp;gt;&lt;br /&gt;
{{#switch: {{{x}}} |1=one |2=two |3|4|5=range 3–5 |other}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That one-line {{mono|#switch}} would read the value of {{mono|&amp;lt;nowiki&amp;gt;{{{x}}}&amp;lt;/nowiki&amp;gt;}}. For a value of 1 it would return “one”. For a value of 2 it would return “two”. For the values 3, 4 or 5 it would return “range 3–5”. For any other value, or a null value, it would return “other”.&lt;br /&gt;
&lt;br /&gt;
However, in many cases, the {{mono|#switch}} function is a multi-line form, with each branch on a different line, as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=moin&amp;gt;&lt;br /&gt;
{{#switch: {{{x}}}&lt;br /&gt;
 | 1 = one&lt;br /&gt;
 | 2 = two&lt;br /&gt;
 | #default = other&lt;br /&gt;
 | 3|4|5 = any of 3–5&lt;br /&gt;
 | {{#expr: 2*3}} = six&lt;br /&gt;
 | {{#expr: 2*3+1}} = {{lc:SEVEN}} &amp;lt;!--lowercase--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This illustrates an alternative method of specifying the default case, which can appear first, last, or anywhere in between.&lt;br /&gt;
&lt;br /&gt;
If no default is specified and no case matches the supplied value, a null value is returned.&lt;br /&gt;
&lt;br /&gt;
For each branch of a {{mono|#switch}}, either side of an equals-sign “=” can be a simple value, an expression, or a template call.&lt;br /&gt;
&lt;br /&gt;
See: [[Help:Switch parser function]], for a full description and examples.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;iferror&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#iferror&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Using &amp;lt;code&amp;gt;#iferror&amp;lt;/code&amp;gt; can check to see if an expression value triggers an error, to then do something for that condition, else it shows the value which was being tested.&lt;br /&gt;
&lt;br /&gt;
This function takes an input string and returns one of two results; the function evaluates to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the input string contains an HTML object with &amp;lt;code&amp;gt;class=&amp;quot;error&amp;quot;&amp;lt;/code&amp;gt;, [[mw:Help:Templates|template]] errors such as loops and recursions, and other &amp;quot;failsoft&amp;quot; parser errors:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;test string&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if error&amp;#039;&amp;#039; {{!}} &amp;#039;&amp;#039;value if correct&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects value based on whether the test string generates a parser error).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
One or both of the return strings can be omitted. If the correct string is omitted, the test string is returned if it is not erroneous. If the error string is also omitted, an empty string is returned on an error:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + 2 }} | error | correct }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: 1 + 2 }} | error | correct }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + X }} | error | correct }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: 1 + X }} | error | correct }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + 2 }} | error }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: 1 + 2 }} | error }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + X }} | error }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: 1 + X }} | error }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + 2 }} }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: 1 + 2 }} }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: 1 + X }} }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;&amp;amp;zwnj;{{#iferror: {{#expr: 1 + X }} }}&amp;#039;&amp;#039;&amp;#039;&amp;lt;!-- maybe the zwnj protects the trailing space before no output --&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: {{#expr: . }} | error | correct }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: {{#expr: . }} | error | correct }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#iferror: &amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;a&amp;lt;/strong&amp;gt; | error | correct }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;&amp;#039;{{#iferror: &amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;a&amp;lt;/strong&amp;gt; | error | correct }}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Using &amp;lt;code&amp;gt;#ifexist&amp;lt;/code&amp;gt;{{anchor|ifexist}} ==&lt;br /&gt;
The function &amp;lt;code&amp;gt;#ifexist&amp;lt;/code&amp;gt; can check to see if a page name or image/media file exists yet. It is extremely fast, but has been limited to 500 instances per page.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ifexist:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;page title&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if exists&amp;#039;&amp;#039; | &amp;#039;&amp;#039;value if doesn&amp;#039;t exist&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (selects value depending on whether a page title exists)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function evaluates to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the page exists, whether it contains content, is visibly blank (contains meta-data such as category links or [[Help:Magic words|magic words]], but no visible content), is blank, or is a [[Help:Redirect|redirect]]. Only pages that are redlinked evaluate to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, including if the page used to exist but has been deleted.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;expr&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Using &amp;lt;code&amp;gt;#expr&amp;lt;/code&amp;gt; ==&lt;br /&gt;
Using &amp;lt;code&amp;gt;#expr&amp;lt;/code&amp;gt; can evaluate a mathematical or boolean expression, to augment the comparisons, and handle error messages.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#expr:&amp;lt;/nowiki&amp;gt; &amp;#039;&amp;#039;expression&amp;#039;&amp;#039; &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#expr: ( {{{1}}}+{{{xshift}}} - 6 ) * 18.4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#expr: ln(7)^3 - abs(-0.344) + floor(5/3) round 3 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#expr: {{{n}}}&amp;gt;0 and {{{n}}}&amp;lt;1.0 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{for|more examples|Help:Calculation}}&lt;br /&gt;
{{for|the use of these functions in tables|WP:Conditional tables}}&lt;br /&gt;
&lt;br /&gt;
== Conditionals for templates==&lt;br /&gt;
To distinguish between a template parameter ( for example, &amp;lt;nowiki&amp;gt;{{{1}}}&amp;lt;/nowiki&amp;gt; ) being defined and non-empty on one hand, or undefined or empty on the other hand, use #if: with a blank default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{{ #if: {{{param|}}} | param is defined and non-empty | param is undefined or empty}}.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To distinguish between defined (and possibly empty) and undefined, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{{ #ifeq: {{{param|+}}} | {{{param|-}}} | param is defined | param is undefined }}.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Help:Conditional tables]]&lt;br /&gt;
* [[mw:Help:Extension:ParserFunctions]], a longer and more technical help page at MediaWiki.org&lt;br /&gt;
* [[Conditional (computer programming)]]&lt;br /&gt;
* [[Relational operator]]&lt;br /&gt;
* [[Help:Template]] and [[Wikipedia:Template sandbox and test cases]]&lt;br /&gt;
* [[m:Help:Advanced templates]]&lt;br /&gt;
* [[:Category:If-then-else templates]]&lt;br /&gt;
{{Wikipedia technical help|collapsed}}&lt;br /&gt;
[[Category:MediaWiki Help|Conditional Expressions]]&lt;br /&gt;
[[Category:Wikipedia template help|Conditional Expressions]]&lt;/div&gt;</summary>
		<author><name>Wikipedia&gt;Plastikspork</name></author>
	</entry>
</feed>