【问题标题】:Stop HTML output after PHP returnPHP 返回后停止 HTML 输出
【发布时间】:2017-03-21 10:01:18
【问题描述】:

我有一个根据条件返回两个值的函数,在调用函数数组的页面中,下面有一个 html 输出到屏幕上:

function submitMessage($user) {
if (!$user) {
$a = "Message A";
$b = "Message B";
return array($a, $b);
}
else {
$a = "Message C";
$b = "Message D";
return array($a, $b);
}

在页面上:

$message = submitMessage($username);

<div class="r-box box-shadow">
  <h4 class="text-center weight-700"><?php echo $message[0];?></h4>
    <p><?php echo $message[1];?></p>
</div>
//more html below etc

我想要的是在从IF statement 的第一部分返回的内容之后停止 html 输出。 比如:

function submitMessage($user) {
if (!$user) {
$a = "Message A";
$b = "Message B";
return array($a, $b);
exit();
//would like the output to stop if this is met.
}
else {
$a = "Message C";
$b = "Message D";
return array($a, $b);
}

我尝试像上面那样添加出口,但 HTML 仍然被发送到屏幕。如果满足第一部分,是否可以停止 HTML 的输出?

【问题讨论】:

  • 你试过了吗?发生了什么?这与您的预期有何不同?
  • @Steve 更新了问题。
  • return 之后的任何内容都将被忽略。如果你要去exit,那么创建数组也没有意义,所以整个函数可以简单地读取if (!$user) exit; $a='..',$b='..';return [$a,$b];
  • 显然 HTML(不是来自 withn 函数)不会被忽略。
  • return 只是将处理返回给调用代码,在这种情况下是嵌入在 html 中的代码。另一方面,exit 停止所有进一步的代码执行。它不是很清楚你想做什么,可能你需要给出更高层次的概述。

标签: php html return


【解决方案1】:

我不确定我的理解是否正确,但对于那种你可以使用的东西 PHP alternative syntax for control structures 如果您需要完全停止输出,其他替代方法是使用Output buffering。 您的函数submitMessage 在到达exit(); 部分之前返回,因此永远不会执行退出。另一方面,如果它确实执行了,那么之后您将不会有任何输出,因为服务器将停止执行脚本。

另一种语法是这样的

$message = submitMessage($username);
<?php if (!$user): ?>
<div class="r-box box-shadow">
<h4 class="text-center weight-700"><?php echo $message[0];?></h4>
<p><?php echo $message[1];?></p>
</div>
<?php else: ?>
some other html here
<?php endif; ?>

【讨论】:

    【解决方案2】:
    <div class="r-box box-shadow">
      <h4 class="text-center weight-700"><?php echo $message[0];?></h4>
      <p><?php echo $message[1];?></p>
    </div>
    <?php  // if $message[1] is defined and not empty, exit
      if ((isset($message[1])) && (!empty($message[1]))){die();} ?>
    
    //more html below etc
    

    【讨论】:

    • 两次都定义了 $message[1],也许我可以添加更多变量并尝试一下。
    猜你喜欢
    • 2018-09-06
    • 2012-05-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2018-10-28
    • 2022-12-31
    相关资源
    最近更新 更多