我有一个大表单,在表单的末尾向用户显示摘要:
You have entered:
<table>
<tr>
<td>First name</td>
<td><?php echo $firstname ?></td>
</tr>
<tr>
<td>Last name</td>
<td><?php echo $lastname ?></td>
</tr>
</table>
我首先设计了摘要页面,现在我想到将这个页面作为确认电子邮件发送给用户会很好。我现在所做的是:
<?php $summarypage = "<table>
<tr>
<td>First name</td>
<td>".$firstname."</td>
</tr>
<tr>
<td>Last name</td>
<td>".$lastname."</td>
</tr>
</table>";
echo $summarypage; ?>
对于循环,我在循环中使用$summarypage .= "blabla";
。
发送电子邮件时,我可以$summarypage
将其附加到我的电子邮件正文中。美丽。
我正在做什么?这对我来说似乎非常“优雅”
当我在电子邮件中再次调用它时,$summarypage
是不是完全重新呈现 - 这意味着所有与它连接的变量(例如$firstname
)将再次被调用 - 性能猪?
是否有某种“缓冲区”我可以将$summarypage
变量写入,所以之后我有一个纯文本变量? $newsummarypage = string($summarypage)
可以解决这个问题吗?
答案 0 :(得分:4)
忽略该级别的表现,无所谓。如果您显示的方法适合您,请使用它。
使事情更具可读性的替代方案(因为你不需要PHP开启/关闭器)是HEREDOC:
<?php $summarypage = <<<EOT
<table>
<tr>
<td>First name</td>
<td>$firstname</td>
</tr>
<tr>
<td>Last name</td>
<td>$lastname</td>
</tr>
</table>
EOT;
?>
答案 1 :(得分:2)
我认为你对php中的字符串/变量如何工作有点困惑。一个小例子可能有帮助
$s = "hello"; //stores the sequence 'h' 'e' 'l' 'l' 'o' in $s
$s = $s." world";//take the sequence stored in $s add the sequence ' world',
//and store in $s again
echo $s; // prints 'hello world'. That is what $s contains, what $s is
$summary = "<div>".$firstname."</div>"; // take '<div>', lookup what $firstname
//contains and add that, then add '</div>' and then store this
//new string thing('<div>Ishtar</div>') in $summary.
echo $summary; //$summary here knows nothing about $firstname,
//does not depend on it
使用它们时会评估所有变量。 (好吧,大多数时候你使用变量 评估它们。)
答案 2 :(得分:1)
$ summarypage是一个字符串,所以它只是分配给变量的一些数据 - 一个纯文本变量,如你所说。将数据分配到$ summarypage后,即可完成工作。您可以愉快地将其写入页面,电子邮件,数据库和文本文件,而无需与$ summarypage相关的其他性能点击。