PHP
Salida del valor de una variable
Buscar..
Introducción
Para construir un programa PHP dinámico e interactivo, es útil generar variables y sus valores. El lenguaje PHP permite múltiples métodos de salida de valor. Este tema cubre los métodos estándar de impresión de un valor en PHP y dónde se pueden usar estos métodos.
Observaciones
Las variables en PHP vienen en una variedad de tipos. Dependiendo del caso de uso, es posible que desee enviarlos al navegador como HTML renderizado, generarlos para la depuración o enviarlos al terminal (si ejecuta una aplicación a través de la línea de comandos).
A continuación se muestran algunos de los métodos y construcciones de lenguaje más utilizados para generar variables:
-
echo
- Da salida a una o más cadenas -
print
: genera una cadena y devuelve1
(siempre) -
printf
: genera una cadena formateada y devuelve la longitud de la cadena generada -
sprintf
- Formatea una cadena y devuelve la cadena formateada -
print_r
- Produce o devuelve el contenido del argumento como una cadena legible para el ser humano -
var_dump
:var_dump
información de depuración legible para el ser humano sobre el contenido de los argumentos, incluido su tipo y valor -
var_export
:var_export
o devuelve una representación de cadena de la variable como código PHP válido, que se puede usar para recrear el valor.
Nota: Cuando se intenta generar un objeto como una cadena, PHP intentará convertirlo en una cadena (llamando a
__toString()
- si el objeto tiene tal método). Si no está disponible, un error similar aObject of class [CLASS] could not be converted to string
. En este caso, tendrá que inspeccionar el objeto más a fondo, consulte: salida-una-vista-estructurada-de-arreglos-y-objetos .
hacer eco e imprimir
echo
e print
son construcciones de lenguaje, no funciones. Esto significa que no requieren paréntesis alrededor del argumento como lo hace una función (aunque uno siempre puede agregar paréntesis alrededor de casi cualquier expresión PHP y, por lo tanto, echo("test")
tampoco hará ningún daño). Producen la representación de cadena de una variable, constante o expresión. No se pueden utilizar para imprimir matrices u objetos.
Asigna la cadena
Joel
a la variable$name
$name = "Joel";
Muestra el valor de $ name usando
echo
&print
echo $name; #> Joel print $name; #> Joel
Los paréntesis no son necesarios, pero pueden ser utilizados
echo($name); #> Joel print($name); #> Joel
Usando múltiples parámetros (solo
echo
)echo $name, "Smith"; #> JoelSmith echo($name, " ", "Smith"); #> Joel Smith
print
, a diferencia deecho
, es una expresión (devuelve1
), y por lo tanto puede usarse en más lugares:print("hey") && print(" ") && print("you"); #> you11
Lo anterior es equivalente a:
print ("hey" && (print (" " && print "you"))); #> you11
Notación abreviada de echo
Cuando está fuera de las etiquetas PHP , una notación abreviada de echo
está disponible de forma predeterminada, utilizando <?=
Para comenzar la salida y ?>
Para finalizarla. Por ejemplo:
<p><?=$variable?></p>
<p><?= "This is also PHP" ?></p>
Tenga en cuenta que no hay terminación ;
. Esto funciona porque la etiqueta PHP de cierre actúa como el terminador de la declaración única. Por lo tanto, es convencional omitir el punto y coma en esta notación abreviada.
Prioridad de print
Si bien la print
es lenguaje de construcción tiene prioridad como operador. Se ubica entre =
+=
-=
*=
**=
/=
.=
%=
&=
and
operadores y ha dejado asociación. Ejemplo:
echo '1' . print '2' + 3; //output 511
Mismo ejemplo con paréntesis:
echo '1' . print ('2' + 3); //output 511
Diferencias entre echo
e print
En resumen, hay dos diferencias principales:
-
print
solo toma un parámetro, mientras que elecho
puede tener múltiples parámetros. -
print
devuelve un valor, por lo que se puede utilizar como una expresión.
Salida de una vista estructurada de arrays y objetos
print_r()
- Arreglos y objetos de salida para la depuración
print_r
generará un formato legible por humanos de una matriz u objeto.
Puede tener una variable que sea una matriz u objeto. Intentar emitirlo con un echo
arrojará el error:
Notice: Array to string conversion
. En su lugar, puede usar la función print_r
para volcar un formato legible por humanos de esta variable.
Puede pasar verdadero como segundo parámetro para devolver el contenido como una cadena.
$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;
// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);
Esto da como resultado lo siguiente:
stdClass Object
(
[myvalue] => Hello World
)
Array
(
[0] => Hello
[1] => World
)
Hello World
42
Además, la salida de print_r
se puede capturar como una cadena, en lugar de simplemente hacer eco. Por ejemplo, el siguiente código $myarray
versión formateada de $myarray
en una nueva variable:
$formatted_array = print_r($myarray, true);
Tenga en cuenta que si está viendo la salida de PHP en un navegador y se interpreta como HTML, los saltos de línea no se mostrarán y la salida será mucho menos legible a menos que haga algo como
echo '<pre>' . print_r($myarray, true) . '</pre>';
Al abrir el código fuente de una página también se formateará su variable de la misma manera sin el uso de la etiqueta
<pre>
.
Alternativamente, puede decirle al navegador que lo que está generando es texto simple y no HTML:
header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);
var_dump()
: genera información de depuración legible para el ser humano sobre el contenido de los argumentos, incluido su tipo y valor
La salida es más detallada en comparación con print_r
porque también genera el tipo de la variable junto con su valor y otra información como ID de objeto, tamaños de matriz, longitudes de cadena, marcadores de referencia, etc.
Puede usar var_dump
para generar una versión más detallada para la depuración.
var_dump($myobject, $myarray, $mystring, $myint);
La salida es más detallada:
object(stdClass)#12 (1) {
["myvalue"]=>
string(11) "Hello World"
}
array(2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
string(11) "Hello World"
int(42)
Nota : Si está utilizando xDebug en su entorno de desarrollo, la salida de var_dump está limitada / truncada de forma predeterminada. Consulte la documentación oficial para obtener más información sobre las opciones para cambiar esto.
var_export()
- Código PHP
salida válido
var_export()
vuelca una representación de PHP
analizable del elemento.
Puede pasar verdadero como segundo parámetro para devolver el contenido a una variable.
var_export($myarray);
var_export($mystring);
var_export($myint);
La salida es un código PHP válido:
array (
0 => 'Hello',
1 => 'World',
)
'Hello World'
42
Para poner el contenido en una variable, puedes hacer esto:
$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value
Después de eso, puedes mostrarlo así:
printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);
Esto producirá la siguiente salida:
$myarray = array (
0 => 'Hello',
1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;
printf vs sprintf
printf
es la salida una cadena con formato utilizando marcadores de posición
sprintf
devolverá la cadena formateada
$name = 'Jeff';
// The `%s` tells PHP to expect a string
// ↓ `%s` is replaced by ↓
printf("Hello %s, How's it going?", $name);
#> Hello Jeff, How's it going?
// Instead of outputting it directly, place it into a variable ($greeting)
$greeting = sprintf("Hello %s, How's it going?", $name);
echo $greeting;
#> Hello Jeff, How's it going?
También es posible formatear un número con estas 2 funciones. Esto se puede usar para formatear un valor decimal usado para representar el dinero de modo que siempre tenga 2 dígitos decimales.
$money = 25.2;
printf('%01.2f', $money);
#> 25.20
Las dos funciones vprintf
y vsprintf
funcionan como printf
y sprintf
, pero aceptan una cadena de formato y una matriz de valores, en lugar de variables individuales.
Concatenación de cuerdas con eco.
Puede usar la concatenación para unir las cadenas "de extremo a extremo" mientras las emite (con echo
o print
por ejemplo).
Puedes concatenar variables usando a .
(punto / punto).
// String variable
$name = 'Joel';
// Concatenate multiple strings (3 in this example) into one and echo it once done.
// 1. ↓ 2. ↓ 3. ↓ - Three Individual string items
echo '<p>Hello ' . $name . ', Nice to see you.</p>';
// ↑ ↑ - Concatenation Operators
#> "<p>Hello Joel, Nice to see you.</p>"
Similar a la concatenación, el echo
(cuando se usa sin paréntesis) se puede usar para combinar cadenas y variables (junto con otras expresiones arbitrarias) usando una coma (,).
$itemCount = 1;
echo 'You have ordered ', $itemCount, ' item', $itemCount === 1 ? '' : 's';
// ↑ ↑ ↑ - Note the commas
#> "You have ordered 1 item"
Concatenación de cadenas vs pasar múltiples argumentos a echo
Pasar múltiples argumentos al comando echo es más ventajoso que la concatenación de cadenas en algunas circunstancias. Los argumentos se escriben en la salida en el mismo orden en que se pasan.
echo "The total is: ", $x + $y;
El problema con la concatenación es que el período .
Tiene prioridad en la expresión. Si se concatena, la expresión anterior necesita paréntesis adicionales para el comportamiento correcto. La precedencia del período afecta también a los operadores ternarios.
echo "The total is: " . ($x + $y);
Salida de enteros grandes
En sistemas de 32 bits, los enteros más grandes que PHP_INT_MAX
se convierten automáticamente a flotar. La salida de estos como valores enteros (es decir, notación no científica) se puede hacer con printf
, utilizando la representación float
, como se ilustra a continuación:
foreach ([1, 2, 3, 4, 5, 6, 9, 12] as $p) {
$i = pow(1024, $p);
printf("pow(1024, %d) > (%7s) %20s %38.0F", $p, gettype($i), $i, $i);
echo " ", $i, "\n";
}
// outputs:
pow(1024, 1) integer 1024 1024 1024
pow(1024, 2) integer 1048576 1048576 1048576
pow(1024, 3) integer 1073741824 1073741824 1073741824
pow(1024, 4) double 1099511627776 1099511627776 1099511627776
pow(1024, 5) double 1.1258999068426E+15 1125899906842624 1.1258999068426E+15
pow(1024, 6) double 1.1529215046068E+18 1152921504606846976 1.1529215046068E+18
pow(1024, 9) double 1.2379400392854E+27 1237940039285380274899124224 1.2379400392854E+27
pow(1024, 12) double 1.3292279957849E+36 1329227995784915872903807060280344576 1.3292279957849E+36
Nota: ¡cuidado con la precisión de flotación, que no es infinita!
Si bien esto se ve bien, en este ejemplo artificial, todos los números se pueden representar como un número binario, ya que todos son potencias de 1024 (y, por lo tanto, 2). Ver por ejemplo:
$n = pow(10, 27);
printf("%s %.0F\n", $n, $n);
// 1.0E+27 1000000000000000013287555072
Genere una matriz multidimensional con índice y valor e imprima en la tabla
Array
(
[0] => Array
(
[id] => 13
[category_id] => 7
[name] => Leaving Of Liverpool
[description] => Leaving Of Liverpool
[price] => 1.00
[virtual] => 1
[active] => 1
[sort_order] => 13
[created] => 2007-06-24 14:08:03
[modified] => 2007-06-24 14:08:03
[image] => NONE
)
[1] => Array
(
[id] => 16
[category_id] => 7
[name] => Yellow Submarine
[description] => Yellow Submarine
[price] => 1.00
[virtual] => 1
[active] => 1
[sort_order] => 16
[created] => 2007-06-24 14:10:02
[modified] => 2007-06-24 14:10:02
[image] => NONE
)
)
Matriz multidimensional de salida con índice y valor en tabla
<table>
<?php
foreach ($products as $key => $value) {
foreach ($value as $k => $v) {
echo "<tr>";
echo "<td>$k</td>"; // Get index.
echo "<td>$v</td>"; // Get value.
echo "</tr>";
}
}
?>
</table>