如何在大型php字符串变量中设置if/else条件?

如何在大型php字符串变量中设置if/else条件?,php,html,Php,Html,我有一个很大的php字符串变量。我想把php if/else条件放在里面,这样编辑和删除按钮就只能显示给注释的作者,而不是所有人,但是我的代码不起作用。我使用冒号来定义if/else条件,但它不起作用。常规的if/else条件也不起作用 以下是我的php代码: $user_id = $_SESSION['user_id']; $if = "if ($user_id == $row['user_id']): "; $else = "else: "; $endif = "endif; ";

我有一个很大的php字符串变量。我想把php if/else条件放在里面,这样编辑和删除按钮就只能显示给注释的作者,而不是所有人,但是我的代码不起作用。我使用冒号来定义if/else条件,但它不起作用。常规的if/else条件也不起作用

以下是我的php代码:

$user_id = $_SESSION['user_id'];

$if = "if ($user_id == $row['user_id']): ";

$else = "else: ";

$endif = "endif; ";

foreach($result as $row)
{
 $output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">

     '. $if .'

     <form  class="input-group form-row" action="comment_delete1.php" method="post" enctype = "multipart/form-data">
        <div class="input-group-prepend">
         <input type="hidden" name="comment_id" id="comment_id" value="'.$row["comment_id"].'" />
         <input type="hidden" name="user_id" id="user_id" value="'.$row["user_id"].'" />
         <input type="submit" name="submit" id="submit" class="submit btn btn-default" value="Delete" />
        </div>
      </form>   

      <button type="button" class="btn btn-default edit" id="'.$row["comment_id"].'" >Edit</button>  

    '. $else .'

      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>

    '. $endif .'

    </div>
</div>
 ';
}
echo $output;

$user_id = $_SESSION['user_id'];

foreach($result as $row) {

   if ($row['user_id'] === $user_id) {

$output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">
     <form  class="input-group form-row" action="comment_delete1.php" method="post" enctype = "multipart/form-data">
        <div class="input-group-prepend">
         <input type="hidden" name="comment_id" id="comment_id" value="'.$row["comment_id"].'" />
         <input type="hidden" name="user_id" id="user_id" value="'.$row["user_id"].'" />
         <input type="submit" name="submit" id="submit" class="submit btn btn-default" value="Delete" />
        </div>
      </form>   

      <button type="button" class="btn btn-default edit" id="'.$row["comment_id"].'" >Edit</button>  
      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>
    </div>
</div>
 ';

    } else if ($row['user_id'] !== $user_id) {

$output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">
      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>
  </div>
 </div>
 ';
    }
}

echo $output;


为了正确执行此操作,必须评估条件:

foreach($result as $row)
{
 $output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">';

if ($user_id == $row['user_id']) {

     $output .=  '<form  class="input-group form-row" action="comment_delete1.php" method="post" enctype = "multipart/form-data">
        <div class="input-group-prepend">
         <input type="hidden" name="comment_id" id="comment_id" value="'.$row["comment_id"].'" />
         <input type="hidden" name="user_id" id="user_id" value="'.$row["user_id"].'" />
         <input type="submit" name="submit" id="submit" class="submit btn btn-default" value="Delete" />
        </div>
      </form>   

      <button type="button" class="btn btn-default edit" id="'.$row["comment_id"].'" >Edit</button>';

} else {

      $output .= '<button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>
    </div>
</div>
 ';
    }
}
echo $output;

这确实不是一个好的方法,你应该考虑重构你的代码,使它变得更整洁、更容易阅读。

< P>这里是解决方案:

如果我们将条件放在php字符串或heredoc中,php会将它们视为字符串,并在屏幕上显示为字符串。所以我们不能在字符串中有条件

我将if-else条件放在php字符串变量之外,并创建了两个php字符串变量,一个带有delete和edit按钮,另一个没有delete和edit按钮。因此,如果user_id等于session user id,将显示带有delete和edit按钮的php字符串变量。另外,如果user_id不等于session user id,则将显示不带删除和编辑按钮的php字符串变量。php字符串变量将在所有条件结束时回显

以下是php代码:

$user_id = $_SESSION['user_id'];

$if = "if ($user_id == $row['user_id']): ";

$else = "else: ";

$endif = "endif; ";

foreach($result as $row)
{
 $output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">

     '. $if .'

     <form  class="input-group form-row" action="comment_delete1.php" method="post" enctype = "multipart/form-data">
        <div class="input-group-prepend">
         <input type="hidden" name="comment_id" id="comment_id" value="'.$row["comment_id"].'" />
         <input type="hidden" name="user_id" id="user_id" value="'.$row["user_id"].'" />
         <input type="submit" name="submit" id="submit" class="submit btn btn-default" value="Delete" />
        </div>
      </form>   

      <button type="button" class="btn btn-default edit" id="'.$row["comment_id"].'" >Edit</button>  

    '. $else .'

      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>

    '. $endif .'

    </div>
</div>
 ';
}
echo $output;

$user_id = $_SESSION['user_id'];

foreach($result as $row) {

   if ($row['user_id'] === $user_id) {

$output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">
     <form  class="input-group form-row" action="comment_delete1.php" method="post" enctype = "multipart/form-data">
        <div class="input-group-prepend">
         <input type="hidden" name="comment_id" id="comment_id" value="'.$row["comment_id"].'" />
         <input type="hidden" name="user_id" id="user_id" value="'.$row["user_id"].'" />
         <input type="submit" name="submit" id="submit" class="submit btn btn-default" value="Delete" />
        </div>
      </form>   

      <button type="button" class="btn btn-default edit" id="'.$row["comment_id"].'" >Edit</button>  
      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>
    </div>
</div>
 ';

    } else if ($row['user_id'] !== $user_id) {

$output .= '
<div class="panel panel-default">
  <div class="panel-body">'.$row["comment"].'</div>

  <div class="panel-footer">
      <button type="button" class="btn btn-default reply" id="'.$row["comment_id"].'" >Reply</button>
  </div>
 </div>
 ';
    }
}

echo $output;


美元如果$其他的这些不是条件,而是变量。变量不会作为构造进行计算,而是作为字符串的一部分进行计算。是的,我将条件放在变量中。我也把条件直接放在字符串中,但这也不起作用。因为你只是把它变成一个不会被计算的字符串。那么我该怎么办呢?你需要养成习惯,这样可以帮助你解决问题。您将获得积分,并鼓励其他人帮助您。您需要重新查看前面的每个问题,以确保您正在执行此操作。我尝试过,但if/else语句本身显示在网站上,并且不起作用。是否显示PHP代码?如果您没有运行web服务器,或者访问文件不正确,或者您使用什么URL访问PHP文件?它是Windows PC中的本地主机。我不知道。你说你的XAMPP工作正常,以前从来没有出现过问题,所以我不认为有什么可以改变的,除非你修改了一些东西。