在PHP中嵌套三层引号时遇到问题

时间:2017-06-27 22:31:56

标签: php html html5 echo

请原谅我,如果我发布的不正确,或者某个地方有这个问题的答案 - 我一直在寻找答案,但我还没有找到答案。

我在echo语句中嵌套引号,它让我感到悲伤(500错误)

此代码有效(以及双引号和单引号的各种排列):

<form action='update.php' method='post'>
<p> 
    <input type='hidden' name='log_id' value='<?php echo $row["log_id"]; ?>'/>
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>

此代码似乎不起作用:

<?php  
if($row["time_back"] == '00:00:00')
{ echo "<form action='update.php' method='post'>
<p>
    <input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/>
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>";} 
else { echo $row["time_back"]; }
?>

我只是不明白我在这里弄错了什么。我已经把各种各样的东西倾注在嵌套引号上,我仍然无法理解它。

3 个答案:

答案 0 :(得分:2)

最好的办法(如果你不打算使用模板引擎)就是停止使用echo打印这么多html。即关闭并重新打开PHP标记,以便在PHP标记之外正常打印大部分HTML:

<?php  
if($row["time_back"] == '00:00:00')
{
?>
<form action='update.php' method='post'>
<p>
    <input type='hidden' name='log_id' value='<?php echo $row['log_id']; ?>' />
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>
<?php
} 
else { echo $row["time_back"]; }
?>

第二好,关闭引号并连接,然后重新打开它们:

<?php  
if($row["time_back"] == '00:00:00')
{ echo "<form action='update.php' method='post'>
<p>
    <input type='hidden' name='log_id' value='" . $row['log_id'] . "' />
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>";
} 
else { echo $row["time_back"]; }
?>

答案 1 :(得分:0)

正如评论中所提到的,不要打开新的PHP标记(即<?php)。相反,只是结束字符串文字(即以"终止)和concatenate来自变量的值(即数组元素:$row['log_id'])。

<?php
if($row["time_back"] == '00:00:00')
{ echo "<form action='update.php' method='post'>
<p>
    <input type='hidden' name='log_id' value='". $row["log_id"] ."'/>
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>";} 
else { echo $row["time_back"]; }

this playground example中看到它。

答案 2 :(得分:0)

以您想要的格式

<?php  
if($row["time_back"] == '00:00:00')
{ echo "<form action='update.php' method='post'>
<p>
    <input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/>
    <input type='time' name='time_back' id='time_back'>
    <input type='submit' value='Update'>
</p>
</form>";} 
else { echo $row["time_back"]; }
?>

你有一个嵌套的PHP语句 - 你仍然在你开始时声明的那个中工作,并且实际上在一个尚未完成的'echo'函数内。将HTML与PHP合并的方法有很多种,但最具可读性的方法之一 是连接运算符.

所以,使用这种方法,修正将是在这一行

<input type='hidden' name='log_id' value='<?php echo $row[\"log_id\"]; ?>'/>

你会改为写

<input type='hidden' name='log_id' value='" . $row["log_id"] . "'/>

请注意我们关闭开头引用",连接,输出我们的PHP(我们不需要PHP标记或echo,因为我们已经在echo函数中,我们只需要连接字符串我们想要合并到HTML中),然后重新连接并重新打开"

希望有所帮助!