<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.strings.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.print.php',
    1 => 'print',
    2 => 'Muestra un string',
  ),
  'up' => 
  array (
    0 => 'ref.strings.php',
    1 => 'Funciones de strings',
  ),
  'prev' => 
  array (
    0 => 'function.parse-str.php',
    1 => 'parse_str',
  ),
  'next' => 
  array (
    0 => 'function.printf.php',
    1 => 'printf',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/strings/functions/print.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.print" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">print</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">print</span> &mdash; <span class="dc-title">Muestra un string</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.print-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>print</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$expression</code></span>): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>

  <p class="para rdfs-comment">
   Muestra <code class="parameter">expression</code>.
  </p>
  <p class="para">
   <code class="literal">print</code> no es una función sino una construcción del lenguaje.
   Su argumento es la expresión que sigue a la palabra clave <code class="literal">print</code>,
   y no está delimitado por paréntesis.
  </p>
  <p class="para">
   La diferencia principal con <code class="literal">echo</code> es que
   <code class="literal">print</code> solo acepta un argumento y siempre devuelve 1.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.print-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">expression</code></dt>
     <dd>
      <p class="para">
       La expresión a mostrar. Los valores que no son strings serán convertidos a string,
       incluso si la <a href="language.types.declarations.php#language.types.declarations.strict" class="link">directiva
       <code class="literal">strict_types</code></a> está activada.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.print-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve <code class="literal">1</code>, siempre.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.print-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo con <code class="literal">print</code></strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"print no requiere paréntesis."</span><span style="color: #007700">;<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// No se añade salto de línea ni espacio; lo siguiente se muestra como "helloworld" en una sola línea<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"hello"</span><span style="color: #007700">;<br />print </span><span style="color: #DD0000">"world"</span><span style="color: #007700">;<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br />print </span><span style="color: #DD0000">"Este string abarca<br />múltiples líneas. Los saltos de línea también<br />se mostrarán"</span><span style="color: #007700">;<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br />print </span><span style="color: #DD0000">"Este string abarca\nmúltiples líneas. Los saltos de línea\nse mostrarán también."</span><span style="color: #007700">;<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// El argumento puede ser cualquier expresión que produzca un string<br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">"example"</span><span style="color: #007700">;<br />print </span><span style="color: #DD0000">"foo es </span><span style="color: #0000BB">$foo</span><span style="color: #DD0000">"</span><span style="color: #007700">; </span><span style="color: #FF8000">// foo es example<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$fruits </span><span style="color: #007700">= [</span><span style="color: #DD0000">"lemon"</span><span style="color: #007700">, </span><span style="color: #DD0000">"orange"</span><span style="color: #007700">, </span><span style="color: #DD0000">"banana"</span><span style="color: #007700">];<br />print </span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">" y "</span><span style="color: #007700">, </span><span style="color: #0000BB">$fruits</span><span style="color: #007700">); </span><span style="color: #FF8000">// lemon y orange y banana<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Las expresiones no-string son convertidas a string, incluso si se usa declare(strict_types=1)<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">6 </span><span style="color: #007700">* </span><span style="color: #0000BB">7</span><span style="color: #007700">; </span><span style="color: #FF8000">// 42<br /></span><span style="color: #007700">print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Como print tiene un valor de retorno, puede ser usado en expresiones<br />// Lo siguiente muestra "hello world"<br /></span><span style="color: #007700">if ( print </span><span style="color: #DD0000">"hello" </span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">" world"</span><span style="color: #007700">;<br />}<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Lo siguiente muestra "true"<br /></span><span style="color: #007700">( </span><span style="color: #0000BB">1 </span><span style="color: #007700">=== </span><span style="color: #0000BB">1 </span><span style="color: #007700">) ? print </span><span style="color: #DD0000">'true' </span><span style="color: #007700">: print </span><span style="color: #DD0000">'false'</span><span style="color: #007700">;<br />print </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.print-notes">
  <h3 class="title">Notas</h3>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <strong>Uso con paréntesis</strong><br />
   <p class="para">
    Rodear el argumento de <code class="literal">print</code> con paréntesis
    no generará un error de sintaxis, y produce una sintaxis similar a una
    llamada normal de función. No obstante, esto puede ser engañoso, ya que los
    paréntesis forman en realidad parte de la expresión que se está
    mostrando, y no parte de la sintaxis de <code class="literal">print</code>
    en sí mismo.
    <div class="informalexample">
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"hello"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// muestra "hello"<br /><br /></span><span style="color: #007700">print(</span><span style="color: #DD0000">"hello"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// también muestra "hello", porque ("hello") es una expresión válida<br /><br /></span><span style="color: #007700">print(</span><span style="color: #0000BB">1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">2</span><span style="color: #007700">) * </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// muestra "9"; los paréntesis hacen que 1+2 se evalúe primero, luego 3*3<br />// la sentencia print ve toda la expresión como un argumento<br /><br /></span><span style="color: #007700">if ( print(</span><span style="color: #DD0000">"hello"</span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">false </span><span style="color: #007700">) {<br />    print </span><span style="color: #DD0000">" - dentro de if"</span><span style="color: #007700">;<br />}<br />else {<br />    print </span><span style="color: #DD0000">" - dentro de else"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #FF8000">// muestra " - dentro de if"<br />// la expresión ("hello") &amp;&amp; false se evalúa primero, dando false<br />// esto se convierte al string vacío "" y se muestra<br />// la construcción print luego devuelve 1, por lo que se ejecuta el código en el bloque if<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    Cuando <code class="literal">print</code> se usa en una expresión más grande,
    colocar tanto la palabra clave como su argumento entre paréntesis puede ser
    necesario para obtener el resultado esperado:
   <div class="informalexample">
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if ( (print </span><span style="color: #DD0000">"hello"</span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">false </span><span style="color: #007700">) {<br />    print </span><span style="color: #DD0000">" - dentro de if"</span><span style="color: #007700">;<br />}<br />else {<br />    print </span><span style="color: #DD0000">" - dentro de else"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #FF8000">// muestra "hello - dentro de else"<br />// a diferencia del ejemplo anterior, la expresión (print "hello") se evalúa primero<br />// después de mostrar "hello", print devuelve 1<br />// como 1 &amp;&amp; false es false, se ejecuta el código en el bloque else<br /><br /></span><span style="color: #007700">print </span><span style="color: #DD0000">"hello " </span><span style="color: #007700">&amp;&amp; print </span><span style="color: #DD0000">"world"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// muestra "world1"; print "world" se evalúa primero,<br />// luego la expresión "hello " &amp;&amp; 1 se pasa al print de la izquierda<br /><br /></span><span style="color: #007700">(print </span><span style="color: #DD0000">"hello "</span><span style="color: #007700">) &amp;&amp; (print </span><span style="color: #DD0000">"world"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// muestra "hello world"; los paréntesis fuerzan a que las expresiones print<br />// se evalúen antes del &amp;&amp;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </p></blockquote>

  <blockquote class="note"><p><strong class="note">Nota</strong>: <span class="simpara">Como esto es una estructura
    del lenguaje, y no una función, no es posible llamarla
    con las <a href="functions.variable-functions.php" class="link">funciones variables</a> o <a href="functions.arguments.php#functions.named-arguments" class="link">argumentos nombrados</a>.
</span></p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.print-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.echo.php" class="function" rel="rdfs-seeAlso">echo</a> - Muestra una string</span></li>
    <li><span class="function"><a href="function.printf.php" class="function" rel="rdfs-seeAlso">printf()</a> - Muestra una string formateada</span></li>
    <li><span class="function"><a href="function.flush.php" class="function" rel="rdfs-seeAlso">flush()</a> - Vac&iacute;a los b&uacute;feres de salida del sistema</span></li>
    <li><a href="language.types.string.php" class="link">Forma de especificar strings literales</a></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>