Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Arithmetische Operatoren

Die 18 Operatoren von eZTemplateArithmeticOperator (sum, sub, mul, div, mod, inc, dec, min, max, abs, ceil, floor, round, int, float, count, roman, rand) mit ihren Parametern, ihrer Eingabe, ihrem Rückgabewert und auf…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/template-operators/arithmetic-operators.md

On this page

This page is a translation. Read the English original

Arithmetische Operatoren

Die Template-Sprache kennt keine Infix-Arithmetik: {1 + 2} ist kein Ausdruck. Jede Berechnung ist ein Operatoraufruf. Alle 18 arithmetischen Operatoren registriert eZTemplateArithmeticOperator (lib/eztemplate/classes/eztemplatearithmeticoperator.php) über lib/eztemplate/classes/eztemplateautoload.php.

Die meisten nehmen ihre Operanden entweder aus der Eingabe über die Pipe (10|sum( 5 )) oder aus den Parametern (sum( 10, 5 )). Wo sich ein Operator anders verhält, sagt es sein Abschnitt. Die Beispiele wurden auf einer Entwicklungsinstallation vom Template-Interpreter und anschließend noch einmal vom Template-Compiler ausgegeben; die kompilierte Form von sum, sub, mul und div ruft dasselbe eZTemplateArithmeticOperator::calculate() auf. Der einzige gefundene Unterschied, bei min, steht in dessen Abschnitt.

Inhalt

  1. Wie Operanden gelesen werden
  2. sum und sub
  3. mul, div und mod
  4. inc und dec
  5. min und max
  6. abs, ceil, floor, round, int und float
  7. count
  8. roman und rand
  9. Ein durchgerechnetes Beispiel: die Anzahl der Seiten
  10. Verwandte Seiten

Wie Operanden gelesen werden

sum, sub, mul und div machen mit eZTemplateArithmeticOperator::numericOperand() aus jedem Operanden eine Zahl: Ganzzahlen und Gleitkommazahlen bleiben, wie sie sind, eine numerische Zeichenkette wird zu ihrer Zahl, eine Zeichenkette, die mit einer Zahl beginnt, wird zu dieser Zahl ('7 days' ist 7), jede andere Zeichenkette und null werden zu 0, ein boolescher Wert wird zu 0 oder 1, ein Array wird zu 0, wenn es leer ist, sonst zu 1, und ein Objekt wird zu 0. Nur diese vier Operatoren verwenden diese Regel; die anderen nutzen die Umwandlung von PHP selbst.

sum und sub

sum

Addiert alle Operanden: die Eingabe über die Pipe (wenn vorhanden) und jeden Parameter.

ParameterTypPflichtStandard
beliebig viele WerteZahl oder numerische Zeichenketteneinkeiner

Eingabe: optional; wenn vorhanden, ist sie der erste Operand. Gibt eine Ganzzahl oder eine Gleitkommazahl zurück. Erzeugte Referenz: sum.

sub

Zieht jeden folgenden Operanden vom ersten ab. Der erste Operand ist die Eingabe über die Pipe oder, wenn nichts übergeben wird, der erste Parameter.

ParameterTypPflichtStandard
beliebig viele WerteZahl oder numerische Zeichenketteneinkeiner

Eingabe: optional. Gibt eine Ganzzahl oder eine Gleitkommazahl zurück. Erzeugte Referenz: sub.

sum( 2, 3, 4 ) = {sum( 2, 3, 4 )}
10|sum( 5 ) = {10|sum( 5 )}
sub( 10, 3, 2 ) = {sub( 10, 3, 2 )}
'7 days'|sum( 1 ) = {'7 days'|sum( 1 )}
sum( 'abc', 2 ) = {sum( 'abc', 2 )}

Ausgabe:

sum( 2, 3, 4 ) = 9
10|sum( 5 ) = 15
sub( 10, 3, 2 ) = 5
'7 days'|sum( 1 ) = 8
sum( 'abc', 2 ) = 2

mul, div und mod

mul

Multipliziert die Eingabe (wenn vorhanden) mit jedem Parameter. Ganz ohne Parameter protokolliert er die Warnung "Requires at least 1 parameter value" und lässt den Wert unverändert.

ParameterTypPflichtStandard
WerteZahlja, mindestens einerkeiner

Eingabe: optional. Gibt eine Ganzzahl oder eine Gleitkommazahl zurück. Erzeugte Referenz: mul.

div

Teilt den ersten Operanden der Reihe nach durch jeden folgenden. Eine Division durch null ergibt 0 statt eines Fehlers. Braucht wie mul mindestens einen Parameter.

ParameterTypPflichtStandard
WerteZahlja, mindestens einerkeiner

Eingabe: optional; wenn vorhanden, ist sie der Dividend. Gibt eine Ganzzahl oder eine Gleitkommazahl zurück. Erzeugte Referenz: div.

mod

Der Rest einer ganzzahligen Division (PHP %). Mit einem Parameter ist die Eingabe der Dividend und der Parameter der Divisor; mit zwei Parametern sind diese Dividend und Divisor, und die Eingabe wird ignoriert. Ohne Parameter protokolliert er "Missing dividend and divisor". Es gibt keine Prüfung auf null: Prüfen Sie den Divisor vorher.

ParameterTypPflichtStandard
Dividend oder DivisorGanzzahljakeiner
DivisorGanzzahlneinkeiner

Gibt eine Ganzzahl zurück. Erzeugte Referenz: mod.

mul( 4, 2.5 ) = {mul( 4, 2.5 )}
div( 10, 4 ) = {div( 10, 4 )}
div( 10, 0 ) = {div( 10, 0 )}
100|div( 2, 5 ) = {100|div( 2, 5 )}
mod( 10, 4 ) = {mod( 10, 4 )}
10|mod( 3 ) = {10|mod( 3 )}

Ausgabe:

mul( 4, 2.5 ) = 10
div( 10, 4 ) = 2.5
div( 10, 0 ) = 0
100|div( 2, 5 ) = 10
mod( 10, 4 ) = 2
10|mod( 3 ) = 1

inc und dec

inc

Gibt den Wert plus eins zurück: die Eingabe über die Pipe oder, wenn nichts übergeben wird, den benannten Parameter value. Die Variable selbst wird nicht geändert; verwenden Sie {set $i = $i|inc}, um das Ergebnis zu speichern.

ParameterTypPflichtStandard
valuebeliebigneinfalse

Erzeugte Referenz: inc.

dec

Dasselbe, minus eins.

ParameterTypPflichtStandard
valuebeliebigneinfalse

Erzeugte Referenz: dec.

{def $i = 5}
$i|inc = {$i|inc}, $i|dec = {$i|dec}, $i is still {$i}
inc( 9 ) = {inc( 9 )}
dec( 1 ) = {dec( 1 )}

Ausgabe:

$i|inc = 6, $i|dec = 4, $i is still 5
inc( 9 ) = 10
dec( 1 ) = 0

min und max

max

Gibt den größten Wert zurück. Die Eingabe über die Pipe nimmt, wenn vorhanden, am Vergleich teil; sonst beginnt der erste Parameter. Braucht mindestens einen Parameter.

ParameterTypPflichtStandard
Wertebeliebigja, mindestens einerkeiner

Erzeugte Referenz: max.

min

Gibt den kleinsten Wert zurück. Braucht mindestens einen Parameter. Verwenden Sie ihn in der Aufrufform, min( $a, $b ): Mit einer Eingabe über die Pipe sind sich Interpreter und kompiliertes Template nicht einig. Der Interpreter (modify()) vergleicht nur die Parameter, daher ist 7|min( 9, 8 ) dort 8; das kompilierte Template bezieht die Eingabe ein und liefert 7.

ParameterTypPflichtStandard
Wertebeliebigja, mindestens einerkeiner

Erzeugte Referenz: min.

max( 3, 9, 4 ) = {max( 3, 9, 4 )}
min( 3, 9, 4 ) = {min( 3, 9, 4 )}
7|max( 3, 5 ) = {7|max( 3, 5 )}
7|min( 9, 8 ) = {7|min( 9, 8 )}

Ausgabe:

max( 3, 9, 4 ) = 9
min( 3, 9, 4 ) = 3
7|max( 3, 5 ) = 7
7|min( 9, 8 ) = 8

Dasselbe Template, auf einer Entwicklungsinstallation kompiliert (das Kompilieren von Templates ist in site.ini eingeschaltet, [TemplateSettings] TemplateCompile), gab in der letzten Zeile 7|min( 9, 8 ) = 7 aus; die anderen Zeilen waren gleich:

Ausgabe mit dem Template-Compiler (in einen Arbeitsordner kompiliert):

max( 3, 9, 4 ) = 9
min( 3, 9, 4 ) = 3
7|max( 3, 5 ) = 7
7|min( 9, 8 ) = 7

abs, ceil, floor, round, int und float

Jeder nimmt einen Wert: den ersten Parameter, wenn es einen gibt, sonst die Eingabe über die Pipe.

OperatorTutGibt zurück
absPHP abs()Zahl
ceilPHP ceil(), rundet aufGleitkommazahl
floorPHP floor(), rundet abGleitkommazahl
roundPHP round() ohne Genauigkeit: auf eine ganze Zahl, Hälften von null wegGleitkommazahl
intPHP-Umwandlung (int): '42abc' ist 42, 9.99 ist 9Ganzzahl
floatPHP-Umwandlung (float)Gleitkommazahl

Keiner von ihnen hat benannte Parameter. round hat keinen Parameter für die Genauigkeit; für zwei Nachkommastellen verwenden Sie mul( $x, 100 )|round|div( 100 ) oder die Locale-Operatoren (l10n( 'number' )). Erzeugte Referenzen: abs, ceil, floor, round, int, float.

-4.6|abs = {-4.6|abs}
4.2|ceil = {4.2|ceil}
4.8|floor = {4.8|floor}
4.5|round = {4.5|round}
round( 2.4 ) = {round( 2.4 )}
'42abc'|int = {'42abc'|int}
'3.75'|float = {'3.75'|float}
int( 9.99 ) = {int( 9.99 )}

Ausgabe:

-4.6|abs = 4.6
4.2|ceil = 5
4.8|floor = 4
4.5|round = 5
round( 2.4 ) = 2
'42abc'|int = 42
'3.75'|float = 3.75
int( 9.99 ) = 9

count

count

Zählt den ersten Parameter oder, wenn es keinen Parameter gibt, die Eingabe über die Pipe:

  • ein Array: die Anzahl seiner Elemente;
  • ein Objekt mit einer Methode attributes() (Knoten, Inhaltsobjekte, Attribute): die Anzahl der Attributnamen, die es Templates anbietet;
  • eine Zeichenkette: ihre Länge in Bytes (strlen), ein Multibyte-Zeichen zählt also mehr als einmal;
  • alles andere: 0.

Ein zweiter Parameter protokolliert eine Warnung über "extra parameters".

ParameterTypPflichtStandard
Wertbeliebigneindie Eingabe

Erzeugte Referenz: count.

{def $node = fetch( 'content', 'node', hash( 'node_id', 89 ) )}
array( 1, 2, 3 )|count = {array( 1, 2, 3 )|count}
'Hello'|count = {'Hello'|count}
count( hash( 'a', 1, 'b', 2 ) ) = {count( hash( 'a', 1, 'b', 2 ) )}
$node.object.data_map|count = {$node.object.data_map|count}
$node|count (attributes of the node object) = {$node|count}
42|count = {42|count}

Ausgabe:

array( 1, 2, 3 )|count = 3
'Hello'|count = 5
count( hash( 'a', 1, 'b', 2 ) ) = 2
$node.object.data_map|count = 7
$node|count (attributes of the node object) = 50
42|count = 0

roman und rand

roman

Schreibt eine positive Ganzzahl als römische Zahl, erzeugt von buildRoman(). Der Wert ist der benannte Parameter value oder die Eingabe über die Pipe. Null und negative Zahlen ergeben eine leere Zeichenkette.

ParameterTypPflichtStandard
valuebeliebigneinfalse (die Eingabe verwenden)

Erzeugte Referenz: roman.

rand

Mit zwei Parametern eine zufällige Ganzzahl zwischen beiden, einschließlich (PHP mt_rand( min, max )); mit jeder anderen Anzahl von Parametern mt_rand() ohne Grenzen. In einem Cache-Block oder einem Template mit Ansichtscache bleibt der Wert gleich, bis der Cache neu aufgebaut wird.

ParameterTypPflichtStandard
MinimumGanzzahlneinkeiner
MaximumGanzzahlneinkeiner

Erzeugte Referenz: rand.

{def $r = rand( 1, 6 )}
4|roman = {4|roman}
roman( 1999 ) = {roman( 1999 )}
2026|roman = {2026|roman}
rand( 1, 6 ) is between 1 and 6: {and( $r|ge( 1 ), $r|le( 6 ) )|choose( 'no', 'yes' )}

Ausgabe:

4|roman = IV
roman( 1999 ) = MCMXCIX
2026|roman = MMXXVI
rand( 1, 6 ) is between 1 and 6: yes

Ein durchgerechnetes Beispiel: die Anzahl der Seiten

Die Kategorie Recipes auf einer Entwicklungsinstallation (Knoten 144), vier Einträge pro Seite:

{def $total = fetch( 'content', 'list_count', hash( 'parent_node_id', 144 ) )
     $limit = 4
     $pages = ceil( div( $total, $limit ) )}
{$total} items under Recipes, {$limit} per page: {$pages} pages

Ausgabe:

18 items under Recipes, 4 per page: 5 pages

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x