1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-24 15:22:14 +01:00
Files
Martin Samesch dde81ed6aa Sync with EN
2025-05-21 11:46:46 +02:00

225 lines
6.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 45042fef652f1b4e904e809fcbfcf31f6c60670b Maintainer: sammywg Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.print">
<refnamediv>
<refname>print</refname>
<refpurpose>Ausgabe eines Strings</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>print</methodname>
<methodparam><type>string</type><parameter>expression</parameter></methodparam>
</methodsynopsis>
<para>
Gibt <parameter>expression</parameter> aus.
</para>
<para>
<literal>print</literal> ist keine Funktion, sondern ein Sprachkonstrukt.
Sein Argument ist der Ausdruck, der auf das Schlüsselwort
<literal>print</literal> folgt, und wird nicht durch Klammern abgegrenzt.
</para>
<para>
Der Hauptunterschied zu <literal>echo</literal> besteht darin, dass
<literal>print</literal> nur ein einziges Argument entgegennimmt, und
immer <literal>1</literal> zurückgibt.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>expression</parameter></term>
<listitem>
<para>
Der Ausdruck, der ausgegeben werden soll. Nicht-String-Werte werden in
Strings umgewandelt, auch wenn <link
linkend="language.types.declarations.strict">die Direktive
<literal>strict_types</literal></link> aktiviert ist.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Gibt immer <literal>1</literal> zurück.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><literal>print</literal>-Beispiele</title>
<programlisting role="php">
<![CDATA[
<?php
print "print benötigt keine Klammern.";
print PHP_EOL;
// Es wird kein Zeilenumbruch oder Leerzeichen eingefügt; das Folgende gibt
// "HalloWelt" in einer Zeile aus
print "Hallo";
print "Welt";
print PHP_EOL;
print "Dieser String umfasst
mehrere Zeilen. Die Zeilenumbrüche
werden mit ausgegeben.";
print PHP_EOL;
print "Dieser String umfasst\nmehrere Zeilen. Die Zeilenumbrüche\nwerden mit ausgegeben.";
print PHP_EOL;
// Das Argument kann ein beliebiger Ausdruck sein, der einen String erzeugt
$foo = "ein Beispiel";
print "foo ist $foo"; // foo ist ein Beispiel
print PHP_EOL;
$fruechte = ["Zitrone", "Orange", "Banane"];
print implode(" und ", $fruechte); // Zitrone und Orange und Banane
print PHP_EOL;
// Nicht-String-Ausdrücke werden in String umgewandelt, auch wenn
// declare(strict_types=1) verwendet wird
print 6 * 7; // 42
print PHP_EOL;
// Da print einen Rückgabewert hat, kann es in Ausdrücken verwendet werden
// Das Folgende gibt "Hallo Welt" aus
if ( print "Hallo" ) {
echo " Welt";
}
print PHP_EOL;
// Das Folgende gibt "wahr" aus
( 1 === 1 ) ? print 'wahr' : print 'falsch';
print PHP_EOL;
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Die Verwendung mit Klammern</title>
<para>
Wenn das Argument in Klammern an <literal>print</literal> übergeben wird,
löst das keinen Syntaxfehler aus und erzeugt eine Syntax, die wie ein
normaler Funktionsaufruf aussieht. Dies kann jedoch irreführend sein, denn
die Klammern sind tatsächlich Teil des auszugebenden Ausdrucks und nicht
Teil der <literal>print</literal>-Syntax selbst.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
print "Hallo";
// gibt "Hallo" aus
print("Hallo");
// gibt auch "Hallo" aus, weil ("Hallo") ein gültiger Ausdruck ist
print(1 + 2) * 3;
// gibt "9" aus; die Klammern bewirken, dass zuerst 1+2 ausgewertet wird, dann 3*3
// Die print-Anweisung sieht den gesamten Ausdruck als ein Argument
if ( print("Hallo") && false ) {
print " - inside if";
}
else {
print " - inside else";
}
// gibt " - inside if" aus
// Der Ausdruck ("Hallo") && false wird zuerst ausgewertet und ergibt false
// Dies wird in die leere Zeichenkette "" umgewandelt und gedruckt
// Das print-Konstrukt gibt dann 1 zurück, also wird der Code im if-Block ausgeführt
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
Wenn <literal>print</literal> in einem größeren Ausdruck verwendet wird,
könnte es nötig sein, sowohl das Schlüsselwort als auch sein Argument in
Klammern zu setzen, um das gewünschte Ergebnis zu erhalten:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ( (print "Hallo") && false ) {
print " - inside if";
}
else {
print " - inside else";
}
// gibt "Hallo - inside else" aus
// Im Gegensatz zum vorherigen Beispiel wird der Ausdruck (print "Hallo")
// zuerst ausgewertet
// Nach der Ausgabe von "Hallo" gibt print 1 zurück
// Da 1 && false falsch ist, wird der Code im else-Block ausgeführt
print "Hallo " && print "Welt";
// gibt "Welt1" aus; print "Welt" wird zuerst ausgewertet,
// dann wird der Ausdruck "Hallo " && 1 an den linken print übergeben
(print "Hallo ") && (print "Welt");
// gibt "Hallo Welt" aus; die Klammern erzwingen, dass die print-Ausdrücke
// vor dem && ausgewertet werden.
?>
]]>
</programlisting>
</informalexample>
</para>
</note>
&note.language-construct;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>echo</function></member>
<member><function>printf</function></member>
<member><function>flush</function></member>
<member><link linkend="language.types.string" >Möglichkeiten literale Strings anzugeben</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->