2012-05-17 100 views
12

PHP中的intinteger之间是否有区别?int与整数之间的PHP差异

哪个更新或更推荐使用?

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

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

int是整数的简写 – Bono

+0

int只是整数的别名。 –

+0

@TufanBarışYıldırım我无法在手册中找到源代码,但是考虑到'var_dump((integer)1)''outputs' int 1'(php 5.3.15); '(int)'也比文档中的'(integer)'更经常使用。也许整数是int的别名...只是nit-picking:P – zamnuts

回答

9

引述manual

转换为整形

为了明确地将一个值转换为整数,使用(INT)或 (整数)管型。 ...

11

他们是一样的,他们都投了价值为整数,一个是仅仅通过四个大字更简洁。

Source

+2

'is_int()','is_integer()'PHP悲伤... – cvsguimaraes

3

这不是真的,int和integer之间实际上是有区别的。 这里一个简单的例子:

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

$i = '1'; 

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

此代码小部分会因为TESTME函数需要“诠释”打印“E_RECOVERABLE_ERROR” 并获得“整数”来代替。

+4

错误的例子...请参阅:http://php.net/manual /en/functions.arguments.php#functions.arguments.type-declaration'...使用布尔值作为参数或返回类型将需要一个参数或返回值,它是类或接口布尔的实例,而不是布尔类型'。这就是为什么你的代码无法正常工作。不是int/integer的beacuase。你可以尝试'testme((int)$ i)'或'testme((integer)$ i)'。它是相同的结果:“传递给testme()的参数1必须是整数的一个实例,整数给出” – instead

10

当我们使用类型从PHP暗示的产生差异7.0+

这是有效的

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

这不是

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

第二个会期望你返回一个对象'class integer',这会造成一个奇怪的句子:

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

这是正确的。问题是,2012年接受的答案不再有效。 – roselan