Trong PHP, một hằng số có thể được xác định, mà sau đó sẽ không có $
, nhưng một biến phải có một. Tuy nhiên, đây không phải là một biến, và không phải là một thay thế cho một biến. Các hằng số được định nghĩa chính xác một lần và không thay đổi trong suốt thời gian tồn tại của tập lệnh.
define('a', 'some value for a');
Ngoài ra, bạn không thể suy giá trị của một hằng số bên trong một dụng dấu ngoặc kép hoặc HEREDOC chuỗi:
$a = "variable a"
define('a', 'constant a');
echo "A string containing $a";
// "A string containing variable a";
// Can't do it with the constant
echo "A string containing a";
// "A string containing a";
Cuối cùng, PHP có thể ra thông báo cho một Use of undefined constant a - assumed 'a'
và giải thích nó như là một nhầm lẫn không thể viện chứng chuỗi "a"
. Tìm trong nhật ký lỗi của bạn để xem điều đó có xảy ra không. Trong trường hợp đó, "a" == TRUE
là hợp lệ, vì chuỗi "a"
không trống và được so sánh một cách lỏng lẻo với TRUE boolean.
echo a == TRUE ? 'true' : 'false';
// Prints true
// PHP Notice: Use of undefined constant a - assumed 'a'
Nguồn
2011-08-22 13:04:03
thử: 'error_reporting (E_ALL^E_STRICT);' Và php sẽ cho bạn biết rằng nó không thể tìm thấy '$ a' và thay vào đó sẽ sử dụng chữ' a' (nghĩa là ký tự a) cho ký tự. – Yoshi
@Yoshi: Viết một câu trả lời, p –
@Tomalak Geret'kal Michael đã bao gồm điểm này và thậm chí anh ấy còn có một lời giải thích tốt hơn.; P – Yoshi