在Echo PHP中的PHP

时间:2016-08-25 02:33:58

标签: php echo

我有以下代码,但echo $jsonData[$i]行会出错。我知道你不应该在PHP中执行PHP。完成此任务的正确方法是什么?

<?php
if( !is_user_logged_in() ){
   echo 'Im online. Login to Chat';
} else {
 echo '<input type=\"submit\" onclick=\"javascript:jqcc.cometchat.chatWith(' <?php echo $jsonData[$i]; ?> ');\" value=\"Chat Now\" class=\"success button small\"
\" >';
}
?>

2 个答案:

答案 0 :(得分:6)

当您已经在字符串范围内时,使用连接运算符.而不是echo:

echo '<input type="submit" onclick="javascript:jqcc.cometchat.chatWith(' . $jsonData[$i] . ');" value="Chat Now" class="success button small">';

此外,除非您使用相同的引号来开始和结束字符串,否则您不需要反斜杠。在您的情况下,您使用单引号打开/关闭,因此双引号不需要转义。

答案 1 :(得分:0)

一旦您处于PHP模式(即达到开始<?php标记),所有内容都将被读取为代码,直到您退出PHP模式(即达到结束?>代码)。因此,当这些标签已经打开时,无需重新打开这些标签。有关详细信息,请参阅basic syntax section of the manual

PHP的一个最佳功能是它允许您在HTML中嵌入代码,而不必在代码中嵌入HTML。当您像这样编写代码时,实际上读代码要容易得多,例如......

<input type="submit" onclick="javascript:jqcc.cometchat.chatWith(<?= $jsonData[$i]; ?>);" value="Chat Now" class="success button small">

请注意,我们只使用PHP打印$jsonData[$i]所需的值,其他所有内容只是普通/文本或HTML打印。

另外,请注意我使用<?php echo的简写形式<?=

为了进一步扩展这一点,在HTML中嵌入代码的想法非常有用的一个原因是,它允许您轻松透明地将代码与数据分开。

<?php
$loggedIn = is_user_logged_in();

if ($loggedIn) {
?>
<input type="submit" onclick="javascript:jqcc.cometchat.chatWith(<?= $jsonData[$i]; ?>);" value="Chat Now" class="success button small">
<?php
} else {
?>
<h1>ohnoes, you're not logged in :(</h1>
<?php
}