Tôi vừa thiết lập một bài tập điểm chuẩn nhanh:
Function time to run 1 million iterations
--------------------------------------------
(int) "123": 0.55029
intval("123"): 1.0115 (183%)
(int) "0": 0.42461
intval("0"): 0.95683 (225%)
(int) int: 0.1502
intval(int): 0.65716 (438%)
(int) array("a", "b"): 0.91264
intval(array("a", "b")): 1.47681 (162%)
(int) "hello": 0.42208
intval("hello"): 0.93678 (222%)
Trung bình, gọi intval () chậm hơn hai lần rưỡi và sự khác biệt là lớn nhất nếu đầu vào của bạn đã là một số nguyên.
Tôi muốn biết tại sao mặc dù.
Cập nhật: Tôi đã chạy thử nghiệm lần nữa, lần này với sự ép buộc (0 + $var)
| INPUT ($x) | (int) $x |intval($x) | 0 + $x |
|-----------------|------------|-----------|-----------|
| "123" | 0.51541 | 0.96924 | 0.33828 |
| "0" | 0.42723 | 0.97418 | 0.31353 |
| 123 | 0.15011 | 0.61690 | 0.15452 |
| array("a", "b") | 0.8893 | 1.45109 | err! |
| "hello" | 0.42618 | 0.88803 | 0.1691 |
|-----------------|------------|-----------|-----------|
Phụ lục: Tôi vừa gặp một hành vi hơi bất ngờ mà bạn nên biết khi chọn một trong các phương pháp sau:
$x = "11";
(int) $x; // int(11)
intval($x); // int(11)
$x + 0; // int(11)
$x = "0x11";
(int) $x; // int(0)
intval($x); // int(0)
$x + 0; // int(17) !
$x = "011";
(int) $x; // int(11)
intval($x); // int(11)
$x + 0; // int(11) (not 9)
Đã thử nghiệm bằng PHP 5.3.1