2012-05-17 41 views
12

Có sự khác biệt nào giữa intinteger trong PHP không?Sự khác biệt về PHP giữa int và số nguyên

Việc sử dụng mới hơn hoặc được khuyến nghị hơn là gì?

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

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

int là viết tắt của số nguyên – Bono

+0

int là bí danh duy nhất cho số nguyên. –

+0

@ TufanBarışYıldırım Tôi không thể tìm thấy một nguồn trong hướng dẫn, tuy nhiên nó xuất hiện 'int' là thuận lợi hơn' số nguyên' xem xét 'var_dump ((số nguyên) 1);' output 'int 1' (php 5.3.15); '(int)' cũng được sử dụng thường xuyên hơn '(số nguyên)' trong tài liệu. Có lẽ số nguyên là một bí danh cho int ... chỉ cần chọn nit: P – zamnuts

Trả lời

9

Trích dẫn các manual:

Chuyển đổi để nguyên

Để chuyển đổi một cách rõ ràng một giá trị để nguyên, sử dụng một trong hai (int) hoặc (số nguyên) phôi. ...

11

số

Họ đều giống nhau, cả hai đều đúc các giá trị cho một số nguyên, một là chỉ terser bởi bốn nhân vật.

Source.

+2

'is_int()', 'is_integer()' PHP nỗi buồn ... – cvsguimaraes

3

Điều này không hoàn toàn đúng, thực sự có sự khác biệt giữa int và số nguyên. Dưới đây là một ví dụ đơn giản:

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

$i = '1'; 

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

này phần nhỏ của mã sẽ in một "E_RECOVERABLE_ERROR" từ testme chức năng được mong đợi 'int' và nhận được 'nguyên' để thay thế.

+4

Ví dụ sai ... Xem: http://php.net/manual /en/functions.arguments.php#functions.arguments.type-declaration '... bằng cách sử dụng boolean như một tham số hoặc kiểu trả về sẽ yêu cầu một đối số hoặc giá trị trả về là một cá thể của lớp hoặc giao diện boolean, chứ không phải là kiểu bool '. Đó là lý do tại sao mã của bạn không hoạt động. Không phải beacuase của int/integer. Bạn có thể thử 'testme ((int) $ i)' hoặc 'testme ((số nguyên) $ i)'. Nó là kết quả tương tự: "Đối số 1 được truyền cho testme() phải là một thể hiện của số nguyên, số nguyên cho" – instead

10

Sự khác biệt phát sinh khi chúng ta sử dụng loại gợi ý từ php 7.0 trở lên

này là hợp lệ

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

đây không phải là

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

điều thứ hai sẽ mong đợi bạn trả về một đối tượng của 'số nguyên lớp', sẽ gây ra một câu lạ:

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

Điều này là chính xác. Vấn đề là câu trả lời được chấp nhận từ năm 2012 không còn giá trị nữa. – roselan

Các vấn đề liên quan