我正在尝试在 php 中回显一些 php 代码:
if(isset($_SESSION['id'])){
echo "<li><a href='profile.php'><?php echo $profile ?></a></li>";
}else{
echo "<li><a href='login.php'>login</a></li>";
}
$profile
有 3 种语言,这就是为什么它是一个变量。
这段代码对我不起作用。它没有任何回应。我如何回显 php 代码?
只需使用连接运算符 .
,如下所示:
echo "<li><a href='profile.php'>" . $profile . "</a></li>";
if(isset($_SESSION['id'])){
echo "<li><a href='profile.php'>$profile</a></li>";
}else{
echo "<li><a href='login.php'>login</a></li>";
}
你有一个选择。您可以使用双引号 ( "
) 或单引号 ( '
)。不同之处在于双引号不需要连接:
双引号:
echo "<li><a href='profile.php'>$profile</a></li>";
单引号:
echo '<li><a href="profile.php">' . $profile . '</a></li>';
逃离解释器。
echo "<li><a href='profile.php'>", $profile ,"</a></li>";
就这样。
这是一个多余的答案,因为其他人都已经说过了,但是您确实应该避免在 php.ini 中打印 html。而是跳出php来写html:
<?php if(isset($_SESSION['id'])): ?>
<li><a href='profile.php'><?php echo $profile ?></a></li>
<?php else: ?>
<li><a href='login.php'>login</a></li>
<?php endif; ?>
并不是说它不能以另一种方式工作,它只是这样更清洁......根据我想的一般意见。
由于您使用的是 double "
,因此将在不连接的情况下处理字符串。
echo "<li><a href='profile.php'>$profile</a></li>";
如果您正在处理需要$
字符为文字的美国货币价格,则可以连接。但除了代码可读性之外,确实没有必要。
echo 'Price: $'.$profile;
这样的代码使您能够检查内容、验证信息并仍然保持 PHP 的动态功能。然而,如果您将 HTML 和 PHP 混合使用,您将遇到必须重写大部分内容以在未来动态化的问题。
理想情况下,您将使用 PHP 制作所有内容:
<?php
$mystring = "<ul>";
if(isset($_SESSION['id'])){
$mystring .= "<li><a href='profile.php'>$profile</a></li>";
}else{
$mystring .= "<li><a href='login.php'>login</a></li>";
}
$mystring .= "</ul>";
$page .= $mystring;
if ($dynamic_site == 1){
print $page;
} else {
//For static caching (much faster)
fwrite ...
}
?>
还需要一个答案:
<?php
echo isset($_SESSION['id']) ? '<li><a href="profile.php">' . $profile . '</a></li>' : '<li><a href="login.php">login</a></li>';
?>
您的错误是您不能在 PHP 标记中包含 PHP 标记。
如果您使用双引号,您可以简单地将变量直接包含在字符串中。
if(isset($_SESSION['id'])){
echo "<li><a href='profile.php'>$profile</a></li>";
}else{
echo "<li><a href='login.php'>login</a></li>";
}
问题解决了。
if(isset($_SESSION['id'])){
echo '<li><a href="profile.php">' . $profile . '</a></li>';
}else{
echo '<li><a href="login.php">login</a></li>';
}