2016-08-25 216 views
2

我有以下代码,但echo $jsonData[$i]行提供了一个错误。我知道你不应该在PHP中执行PHP。什么是完成这个的正确方法?Echo内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\" 
\" >'; 
} 
?> 
+0

http://php.net/manual/en/function.echo.php –

+3

这不是一个坏问题。不要让选票给你。 –

+0

这是一个糟糕的问题,因为这是基本的语言功能。有时,更有趣的问题会被降低,因为他们在提问时没有遵循网站政策。其中一个政策是在研究后询问,例如这个问题根本没有显示任何研究,因为这是任何PHP学习者学习的第一件事情。 –

回答

6

当你一个字符串的范围之内是已经可以使用连接符.而不是回声:

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

而且,除非你使用,你不需要反斜杠相同的引号开始和结束字符串。在你的情况下,你用单引号打开/关闭,所以双引号不需要转义。

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代码embeding是如此有用,一个是它允许您从数据简单透明地单独的代码。

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