快速的PHP问题

时间:2009-10-15 07:43:05

标签: php syntax

我有以下摘录:

if (empty($last_db_error)) {
    echo "OK";
} else {
    echo "Error activating subscription.";
    echo "{$last_db_error}";
}

问题是"{$last_db_error}"没有显示,除非我只使用$last_db_error,没有引号和括号。 我在这里错过了什么吗?上述语法不正确吗?

7 个答案:

答案 0 :(得分:6)

在这种情况下,括号和引号无用。

if (empty($last_db_error)) {
    echo "OK";
} else {
    echo "Error activating subscription.";
    echo $last_db_error;
}

完美地完成这项工作。

顺便说一下,即使你可以在PHP中添加$vars内部引号,也不建议这样做,因为:

  • 仅适用于双引号,单引号将显示var名称,这会导致错误。
  • 它减慢了字符串解析速度。

使用点运算符连接变量更合适:

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; ?>

答案 1 :(得分:2)

$ last_db_error是字符串还是对象?如果它是一个字符串,它应该在使用花括号的双引号之间正确显示(就像你上面发布的那样),所以代码似乎是正确的。

在else语句中放置var_dump($last_db_error),看看它输出的内容。

答案 2 :(得分:1)

只需使用

echo $last_db_error; 

这里不需要其余的。

答案 3 :(得分:0)

花括号用于评估更复杂的变量名称。如果你想在输出中使用大括号,那么尝试转义它们,如下所示:

if (empty($last_db_error)) {
    echo "OK";
} else {
    echo "Error activating subscription.";
    echo "\{$last_db_error\}";
}

答案 4 :(得分:0)

对我而言,它运作正常:

<?php
$last_db_error = "LLLLLLLLLLLL";
echo "{$last_db_error}";

它告诉我 LLLLLLLLLLLL

答案 5 :(得分:0)

也许您正在使用某种模板系统来解析{ .... }内的所有内容?

答案 6 :(得分:0)

最简单的方法是:

echo $last_db_error;

对于某些情况,请尝试以下方法:

 echo "${last_db_error}";
 echo ${'last_db_error'};

Here is a good article regarding php variable names: curly braces