1

我正在尝试在 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 代码?

4

9 回答 9

4

只需使用连接运算符 .,如下所示:

echo "<li><a href='profile.php'>" . $profile . "</a></li>";
于 2013-05-24T17:54:42.840 回答
3
if(isset($_SESSION['id'])){
echo "<li><a href='profile.php'>$profile</a></li>";
}else{
echo "<li><a href='login.php'>login</a></li>";
}
于 2013-05-24T17:55:24.907 回答
3

你有一个选择。您可以使用双引号 ( ") 或单引号 ( ')。不同之处在于双引号不需要连接:


双引号:

echo "<li><a href='profile.php'>$profile</a></li>";

单引号:

echo '<li><a href="profile.php">' . $profile . '</a></li>';
于 2013-05-24T17:58:19.633 回答
2

逃离解释器。

echo "<li><a href='profile.php'>", $profile ,"</a></li>";

就这样。

于 2013-05-24T17:54:48.590 回答
2

这是一个多余的答案,因为其他人都已经说过了,但是您确实应该避免在 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; ?>

并不是说它不能以另一种方式工作,它只是这样更清洁......根据我想的一般意见。

于 2013-05-24T17:57:26.077 回答
2

由于您使用的是 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 ...
} 
?>
于 2013-05-24T17:55:38.320 回答
2

还需要一个答案:

<?php
    echo isset($_SESSION['id']) ? '<li><a href="profile.php">' . $profile . '</a></li>' : '<li><a href="login.php">login</a></li>';
?>
于 2013-05-24T18:02:38.783 回答
1

您的错误是您不能在 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>";
}

问题解决了。

于 2013-05-24T18:36:40.830 回答
1
if(isset($_SESSION['id'])){
echo '<li><a href="profile.php">' . $profile . '</a></li>';
}else{
echo '<li><a href="login.php">login</a></li>';
}
于 2013-05-24T17:58:25.707 回答