2016-11-07 3 views
0

У меня есть функция, которая возвращает два значения, основанные на условиях, на странице, что функция массива вызывается есть HTML ниже, который выводит на экран:Stop HTML выход после PHP возврата

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 

То, что я хочу для вывода HTML, чтобы остановить после того, как вернулся из первой части IF statement. Что-то вроде:

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, если первая часть выполнена?

+0

Пробовали ли вы его? Что случилось? Как это отличается от ваших ожиданий? – Steve

+0

@Steve обновил вопрос. –

+0

что-нибудь после 'return' будет проигнорировано. Если вы собираетесь «выходить», то нет смысла создавать массив в любом случае, поэтому вся функция может просто читать 'if (! $ User) exit; $ a = '..', $ b = '..'; return [$ a, $ b]; ' – Steve

ответ

0
<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 
+0

$ message [1] определяется как раз, возможно, я могу добавить дополнительную переменную и попробовать это. –

0

Я не уверен, что я правильно получить Вас, но и для такого рода вещи вы можете использовать PHP alternative syntax for control structures Другой альтернативы это было бы использовать Output buffering, если вам нужно полностью остановить вывод. Ваша функция submitMessage возвращает до того, как она достигнет части exit();, поэтому выход не выполняется. С другой стороны, если бы это было выполнено, у вас не было бы выхода после этого, потому что сервер просто прекратил выполнение скрипта.

Alternative синтаксис будет что-то вроде этого

$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; ?> 
Смежные вопросы