PHP luôn cần phải biết "loại hiện tại" của một giá trị trước khi nó có thể sử dụng nó cho mục đích nào, bao gồm khởi tạo một biến. "Loại hiện tại" là siêu dữ liệu (một liệt kê) đi cùng với tất cả các giá trị.
Trong ví dụ mã của bạn dàn diễn viên là vô nghĩa bởi vì bạn đang khởi tạo các biến sử dụng các giá trị văn chương, đó là luôn luôn loại rõ ràng:
$s = "foo";
echo is_string($s); // 1
$s = (string)"foo";
echo is_string($s); // also 1
Cũng vậy với các số nguyên và mảng.
Có ít nhất một trường hợp kiểu của biến sẽ là một cái gì đó khác hơn bạn có thể mong đợi ngay từ cái nhìn đầu tiên:
$i = PHP_INT_MAX + 1; // or use something like 999999999999
echo gettype($i); // "double"!
Trong trường hợp này sử dụng một dàn diễn viên sẽ làm cho $i
một số nguyên, nhưng nó sẽ cũng thay đổi giá trị của nó:
$i = (int)(PHP_INT_MAX + 1);
echo gettype($i); // "integer"
echo $i; // a very large negative number -- what?!?
Tất nhiên điều này không phải do thiếu diễn viên, mà là một tạo phẩm về cách số được xử lý bằng PHP. Vì vậy, kết luận là rõ ràng: không có điểm trong việc sử dụng phôi khi khởi tạo với các chữ cái.
Nếu bạn đang khởi tạo biến mà bạn dự định sử dụng làm loại X có giá trị Y khác (hoặc loại chưa biết) thì có lý do để sử dụng diễn viên rõ ràng: viết tài liệu theo mã biến sẽ được sử dụng trong tương lai. Nhưng đừng đánh giá quá cao lợi ích: thông tin này chỉ dành cho con người; PHP sẽ tự động thực hiện các chuyển đổi kiểu thông thường bất cứ khi nào bạn cố gắng sử dụng một biến như một kiểu khác với nó.
câu trả lời thực sự tốt đẹp +1 – Robert