2016-11-07 94 views
0

我已返回基於條件的兩個值,在頁面,該函數數組是被稱爲有一個功能是HTML低於其輸出到屏幕上:PHP返回後停止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 

我要的是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();部件之前返回,因此退出永遠不會執行。另一方面,如果它執行了,那麼在此之後你將不會有任何輸出,因爲服務器會停止執行腳本。

替代sintax會是這樣的

$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; ?>