1
<?php

$value="Hello";

echo '
<table border="1">
<tr>
<td>Row $value, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
';
?> 

为什么我没有得到 Hello 而不是 $value。如何使它成为可能。

4

7 回答 7

4

基本的 PHP 解析规则:用单引号 ( ')括起来的字符串不会被 PHP 解析器评估,并且其中的任何变量都将作为文字文本被忽略。尝试

echo "
 ...
   $value
 ...
";

反而。注意使用双引号 ( ")。

此外,请不要使用多线回声。它们很难维护。如果您必须进行多行输出或分配,请考虑改用HEREDOC

HEREDOCs 消除了引用引号的需要,因此您的回声变为:

echo <<<EOL
<table border="1">
   ...
   $values
   ...
</table>
EOL;
于 2013-07-02T18:02:58.927 回答
0

在多行上使用字符串对我来说从来都不是一个好的解决方案。我更喜欢heredoc

$value="Hello";

echo <<<EOD
    <table border="1">
    <tr>
        <td>Row {$value}, cell 1</td>
        <td>Row 1, cell 2</td>
    </tr>
    </table>
EOD;
于 2013-07-02T18:04:18.357 回答
0

您可以在这样的双引号内使用变量,但不能使用单引号。改为这样做:

echo '
<table border="1">
  <tr>
    <td>Row '.$value.', cell 1</td>
    <td>Row 1, cell 2</td>
  </tr>
</table>';

或者您可以这样做并转义字符串中的引号:

echo "
<table border=\"1\">
  <tr>
    <td>Row $value, cell 1</td>
    <td>Row 1, cell 2</td>
  </tr>
</table>";

但是,我建议使用第一种方式,因为它的代码更高效、更简洁。

于 2013-07-02T18:02:57.490 回答
0
<?php

$value="Hello";

echo '
<table border="1">
<tr>
<td>Row ' . $value . ', cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>';
?> 
于 2013-07-02T18:03:07.690 回答
0

您只能在双引号中打印 Php 变量,而不是在单引号中。

或者

echo '
<table border="1">
<tr>
<td>Row '.$value.', cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
';
?>
于 2013-07-02T18:02:02.177 回答
0

您需要将其封装在双引号中,以便处理器评估其中的任何变量。

echo "
<table border='1'>
<tr>
<td>Row $value, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
";
于 2013-07-02T18:02:24.003 回答
-1

原因是如果您将使用单引号,那么解析器将不会在其中查找变量。为此,您需要使用双引号或将变量放在单引号之外。

<?php

$value="Hello";

echo '
<table border="1">
<tr>
<td>Row '. $value .', cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
';
?> 

或者

<?php

$value="Hello";

echo "
<table border='1'>
<tr>
<td>Row $value, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
";
?> 
于 2013-07-02T18:03:02.303 回答