快速PHP问题
我有以下摘录:快速PHP问题,php,syntax,Php,Syntax,我有以下摘录: if (empty($last_db_error)) { echo "OK"; } else { echo "Error activating subscription."; echo "{$last_db_error}"; } 问题是没有显示“{$last\u db\u error}”,除非我只使用$last\u db\u error,没有引号和括号。 我是不是遗漏了什么?上述语法是否正确?在这种情况下,括号和引号是无用的 if (empty($las
if (empty($last_db_error)) {
echo "OK";
} else {
echo "Error activating subscription.";
echo "{$last_db_error}";
}
问题是没有显示“{$last\u db\u error}”
,除非我只使用$last\u db\u 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;
}
一旦你有很多文本要处理,我敦促你使用。例如:
好啊
激活订阅时出错。
只需使用
echo $last_db_error;
其余的在这里不需要。花括号用于计算更复杂的变量名。如果要在输出中使用花括号,请尝试对其进行转义,如下所示:
if (empty($last_db_error)) {
echo "OK";
} else {
echo "Error activating subscription.";
echo "\{$last_db_error\}";
}
$last\u db\u错误是字符串还是对象?如果它是一个字符串,则应该使用大括号(如上面所述)在双引号之间正确显示,以便代码看起来正确 在else语句中放置一个
var\u dump($last\u db\u error)
,查看它的输出。对我来说,它工作正常:
<?php
$last_db_error = "LLLLLLLLLLLL";
echo "{$last_db_error}";
也许您正在使用某种模板系统,它可以解析{….}
中的所有内容。最简单的方法是:
echo $last_db_error;
对于某些情况,请尝试以下方法:
echo "${last_db_error}";
echo ${'last_db_error'};
嗯?双引号字符串中的花括号对于这样的输出变量是完全合法的,不需要转义,除非您确实想要打印括号。我想OP希望输出包含花括号。似乎他没有。字符串插值非常合适。在我看来,“减慢解析速度”和“不能使用单引号”都不是有效的论据。而且,我相信OP知道你所说的一切。他实际上很感兴趣为什么他的代码不起作用,因为它是有效的PHP。我相信ChrisRamakers可能已经发现了这个问题。@Ionut G.Stan:好吧,如果错误倾向和性能低效对你来说不是有效的论据,那是什么?但事实上,ChrisRamakers有一个比我更好的答案。顺便说一句,如果chris是对的,这只会增加一个事实,那就是它很容易出错。使用“.”会引发错误。什么是重要的?对代码进行良好的结构化,这样,如果我在字符串中有一个带有单引号的变量,那么为了修复错误,我必须更改一个地方。请停止讨论字符串插值的优化。我更喜欢可读的代码和更多的时间来优化数据库查询。字符串插值似乎适用于具有\uuu toString
方法的用户定义对象。至少在PHP5.2.11中。你确定它不工作吗?它在我的机器上工作。我应该把我的机器运给你吗?英雄联盟
echo "${last_db_error}";
echo ${'last_db_error'};