快速PHP问题
我有以下摘录:快速PHP问题
if (empty($last_db_error)) {
echo "OK";
} else {
echo "Error activating subscription.";
echo "{$last_db_error}";
}
的问题是,"{$last_db_error}"
不显示,除非我只使用$last_db_error
,不带引号和括号。 我在这里错过了什么吗?上面的语法不正确吗?
括号和引号在这种情况下是无用的。
if (empty($last_db_error)) {
echo "OK";
} else {
echo "Error activating subscription.";
echo $last_db_error;
}
将完成这项工作。
顺便说一句,即使你可以把PHP $vars
内部行情,不建议这样做,因为:
- 它适用于双引号只,单引号将显示变量名称,从而导致错误。
- 它减缓了字符串解析。
它更适合串联使用点运算符变量:
if (empty($last_db_error)) {
echo "OK";
} else {
echo "Error activating subscription.\n".
$last_db_error;
}
而且只要你有大量的文字处理,恳请您使用PHP alternative syntax。 E.G:
<?php if (empty($last_db_error)): ?>
OK
<?php else : ?>
Error activating subscription.
<?php echo $last_db_error; ?>
<?php endif; ?>
字符串插值非常合适。在我看来,“缓慢解析”和“不能用单引号”是无效的论点。 – 2009-10-15 07:57:17
而且,我确定OP知道你所说的一切。他实际上对为什么他的代码无法正常工作感兴趣,因为它是有效的PHP。我相信ChrisRamakers可能已经发现了这个问题。 – 2009-10-15 07:58:37
@Ionut G. Stan:好吧,如果错误prones和性能低效不是你的有效论据,那么是什么?但的确,ChrisRamakers比我的答案要好。 – 2009-10-15 08:01:29
只需使用
echo $last_db_error;
此处不需要休息。
为$ last_db_error一个字符串或对象?如果它是一个字符串,它应该在使用大括号的双引号之间正确显示(就像你上面发布的那样),所以代码看起来是正确的。
在else语句中放置var_dump($last_db_error)
并查看它输出的内容。
似乎字符串插值可以与具有'__toString'方法的用户定义对象一起使用。至少在PHP 5.2.11中。 – 2009-10-15 08:08:44
对于我来说,好的工作:
<?php
$last_db_error = "LLLLLLLLLLLL";
echo "{$last_db_error}";
这表明我 LLLLLLLLLLLL
也许你正在使用某种形式的模板系统,它解析内部{ .... }
一切吗?
的simpliest方法是:
echo $last_db_error;
对于某些情况下,尝试这些:
echo "${last_db_error}";
echo ${'last_db_error'};
Here is a good article regarding php variable names: curly braces
你确定它不工作?它适用于我的机器。 我应该向您寄送我的机器吗?大声笑。 – lemon 2009-10-15 08:11:31