¿Por qué obtengo la salida de 60 de die() para esto:

$min = $row['min'];
die($min);

Pero no por esto?

$min = $row['min']*60;
die($min);
php
1
speedvees 26 oct. 2017 a las 21:20

3 respuestas

La mejor respuesta

Solución

Si necesita el valor incluso si es un número, analícelo en cadena con strval :

die(strval($min));

Documentación

Según die, es un Equivalente a salir .

En Salir podemos ver que tiene dos firmas:

void exit ( int $status )

Y

void exit ([ string $status ] )

Ambos se describen a continuación:

Si el estado es un entero , ese valor se usará como estado de salida y no impreso Los estados de salida deben estar en el rango de 0 a 254, el El estado de salida 255 está reservado por PHP y no se utilizará. El estado 0 se usa para terminar el programa con éxito.

Y

Si el estado es una cadena , esta función imprime el estado justo antes de salir.

(énfasis mío)


Elaboración

En el primer ejemplo de código de su pregunta, $row['min'] probablemente sea solo una cadena (por ejemplo, string(2) "70"). Cuando lo multiplica por un número, PHP 'convierte' el valor a un número para que pueda multiplicarse.

Entonces, en el primer ejemplo, llama a la función exit ([ string $status ] ), que imprime el estado justo antes de salir . En el segundo ejemplo, llama a la función exit ( int $status ), que se usará como estado de salida y no se imprimirá.

Si quiere verlo usted mismo, use var_dump y verifique tipos de variables Verifique un ejemplo.

2
FirstOne 27 oct. 2017 a las 11:29

La función die() es un alias de exit ().

La documentación de PHP establece que exit() es polymorphic. Es decir, puede aceptar cadenas o enteros como su único argumento.

Cuando proporciona una cadena, se imprime antes de que salga el script.

Cuando proporciona un número entero (entre 0-254), se usa como y no se imprime nada. Un código de 0 denota la finalización exitosa del script, y cualquier otra cosa es un error. El código 255 está reservado por PHP.

Puede usar strval() o intval() para asegurarse de que está pasando el tipo de datos correcto para sus necesidades.

1
Jeff Standen 26 oct. 2017 a las 19:10

Se debe a que debe pasar una cadena: "Obligatorio. Especifica el mensaje o el número de estado para escribir antes de salir del script. El número de estado no se escribirá en la salida". Después de multiplicar, el valor se convierte en int type y, por lo tanto, die no lo imprimirá.

2
Bartosz Herba 26 oct. 2017 a las 18:26