2012-05-17 34 views
12

¿Hay alguna diferencia entre int y integer en PHP?Diferencia PHP entre enteros y enteros

¿Cuál es el uso más nuevo o más recomendado?

$a = (int)"3 euros"; 
echo $a; // $a==3 

$a = (integer)"3 euros"; 
echo $a; // $a==3 
+2

int es la abreviatura de entero – Bono

+0

int es solo el alias de entero. –

+0

@ TufanBarışYıldırım No pude encontrar una fuente en el manual, sin embargo, parece que 'int' es favorable sobre' entero', considerando 'var_dump ((integer) 1);' outputs 'int 1' (php 5.3.15); '(int)' también se usa con más frecuencia que '(integer)' en los documentos. Quizás integer es un alias para int ... solo nit-picking: P – zamnuts

Respuesta

9

Citando la manual:

la conversión a entero

Para convertir explícitamente un valor a un entero, utilice el (int) o (integer) yesos. ...

11

Ellos son los mismos, ambos echaron el valor a un entero, una es simplemente más concisa por cuatro caracteres.

Source.

+2

'is_int()', 'is_integer()' PHP sadness ... – cvsguimaraes

3

Esto no es del todo cierto, en realidad hay una diferencia entre el entero y el entero. Aquí un ejemplo sencillo:

//print_r('PHP version: '.phpversion().'<br />'); 
//PHP version: 5.5.23 

$i = '1'; 

function testme(int $j){ 
    print_r ($j); 
} 
testme(intval($i)); 

Esta pequeña porción de código imprimirá un "E_RECOVERABLE_ERROR" desde testme función de espera 'int' y obtener 'entero' en su lugar.

+4

Ejemplo erróneo ... Ver: http://php.net/manual /en/functions.arguments.php#functions.arguments.type-declaration '... el uso de booleano como parámetro o tipo de retorno requerirá un argumento o valor de retorno que sea una instancia de la clase o interfaz booleana, en lugar de tipo bool '. Es por eso que su código no funciona. No es el resultado de int/entero. Puede probar 'testme ((int) $ i)' o 'testme ((integer) $ i)'. Es el mismo resultado: "El argumento 1 pasado a testme() debe ser una instancia de entero, número entero dado" – instead

10

La diferencia surge cuando utilizamos tipo insinuando desde PHP 7.0 o superior

esto es válido

function getId(): int 
{ 
return $id; 
} 

esto no es

function getId(): integer 
{ 
return $id; 
} 

el segundo esperará que devolver un objeto de un 'entero de clase', que causará una oración extraña:

Uncaught TypeError: Return value of getId() must be an instance of integer, integer returned in ... 
+1

Esto es correcto. El problema es que la respuesta aceptada de 2012 ya no es válida. – roselan