这打印苹果:
define("CONSTANT","apple");
echo CONSTANT;
但这不是:
echo "This is a constant: CONSTANT";
为什么?
答案 0 :(得分:24)
因为“不打印引号内的常量”。正确的形式是:
echo "This is a constant: " . CONSTANT;
点是连接运算符。
答案 1 :(得分:16)
define('QUICK', 'slow');
define('FOX', 'fox');
$K = 'strval';
echo "The {$K(QUICK)} brown {$K(FOX)} jumps over the lazy dog's {$K(BACK)}.";
答案 2 :(得分:6)
如果要在字符串中包含对变量的引用,则需要使用特殊语法。此功能称为字符串插值,并包含在大多数脚本语言中。
This page描述了PHP中的功能。看起来在PHP中的字符串插值过程中不会替换常量,因此获得所需行为的唯一方法是使用Artefacto建议的连接。
事实上,我刚刚发现another post说了很多话:
AFAIK,有静态变量,有一个 与常数相同的“问题”: 没有插值可能,只需使用 临时变量或连接。
答案 3 :(得分:0)
这里建议使用连接作为唯一的解决方案,但在使用如下语法时这并不起作用:
CREATE OR REPLACE FUNCTION create_timestamps()
RETURNS TRIGGER AS $$
BEGIN
NEW.created_at = now();
NEW.updated_at = now();
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE OR REPLACE FUNCTION update_timestamps()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER users_insert BEFORE INSERT ON users FOR EACH ROW EXECUTE PROCEDURE create_timestamps();
CREATE TRIGGER users_update BEFORE UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE update_timestamps();
当然,上面只是将文字' MY_CONSTANT'在$ html。
其他选项包括:
定义一个临时变量来保存常量:
define("MY_CONSTANT", "some information");
$html = <<< EOS
<p>Some html, **put MY_CONSTANT here**</p>
EOS;
如果有很多常量,你可以得到它们的数组并使用它:
$myConst = MY_CONSTANT;
$html = <<< EOS
<p>Some html, {$myConst} </p>
EOS;
当然,在这样一个简单的例子中,没有理由使用&lt;&lt;&lt;&lt;&lt;&lt;&lt;运算符,但是使用更长的输出块,上面两个可能比一串字符串连接更清晰,更容易维护!