2012-10-10 48 views
0

我在if語句中有一個foreach循環。我的代碼是速記格式。如果if條件返回true,我不希望執行foreach循環,而是將回顯消息「抱歉的數據庫爲空!」。PHP速記/短條件IF語句:執行代碼或返回消息

功能碼

<?php if (!$check == 0) : ?> 
    <?php foreach... ?> 
     ... 
    <?php endforeach; ?> 
<?php endif; ?> 
<?php if ($check == 0) echo 'Sorry database is empty!'; ?> 

我不喜歡這個代碼是,我有兩個獨立的if條件。當然,它的工作原理應該如此,但我寧願在第一個if中有一個else

  1. 什麼是我想要做的正確語法?


或者,如果你的答案是這樣的:

$var_is_greater_than_two = ($var > 2 ? true : false); // returns true 

解釋如何將停止執行的foreach

回答

0

只需使用一個else:

<?php if ($check !== 0) : ?> 
    <?php foreach... ?> 
     ... 
    <?php endforeach; ?> 
<?php else: echo 'Sorry database is empty!'; ?> 
<?php endif; ?> 

您也可以縮短這個:

$var_is_greater_than_two = ($var > 2 ? true : false); // returns true 

只是這樣的:

$var_is_greater_than_two = ($var > 2); // returns true 
+0

正是我需要的。只是無法得到正確的語法,並狂熱地搜索了20分鐘,沒有結果。謝謝。你怎麼知道這個語法你在哪裏找到的? – fyz

+0

我一直在爲PHP編碼12年。老實說不記得什麼時候或在哪裏我學到了特定的語法:) – AlienWebguy

+0

是的,我想到了很多 - 重新說明了這個問題..如果你需要尋找一些東西......你會看什麼。除了PHP手冊(恕我直言,感覺沒什麼用處) – fyz

0

爲什麼不只是如果添加其他的?代碼塊看起來像特殊渲染,類似於Zenf Framework視圖腳本。除非特殊的語法不允許別的,否則你應該可以這樣做。

<?php if (!$check == 0) : ?> 
    <?php foreach... ?> 
    ... 
    <?php endforeach; ?> 
<?php else : ?> 
     Sorry database is empty! 
<?php endif; ?> 
0

想法可能是將foreach循環提取到另一個方法。 其他文件或同一文件中有你的executeLoop方法:

<?php 
    function executeLoop() 
    { 
    foreach(..) 
    { 
     //do something 
    } 
    } 
?> 
enter code here 

的幾行代碼後,您可以:

<?php (condition)?executeLoop() : echo $something;?> 

的好處是,如果你想以後可以重用代碼。

+0

這將如何工作?我需要做些什麼'foreach' – fyz

+0

@fabio查看我的更新回答 –

+0

我很抱歉你誤會了我。我有你的想法,但問題是如何在'shortcode'中工作換句話說...我如何將'function executeLoop()'用我當前的短代碼包裝?另外它們是塊中的多個foreach循環。每個都需要'?executeLoop()' – fyz