如何在elseif子句中放置一个foreach循环

时间:2014-06-11 07:02:39

标签: php if-statement foreach mediawiki

我想展示广告,如果title == MainPage或者category == Portal。 我正在尝试创建一个if,elseif,else语句,但我不确定在哪里放置foreach循环。 这是我的代码:

<?php
     $id =  $wgTitle->getArticleID();
        $dbr = wfGetDB( DB_SLAVE );
        $result = $dbr->query("SELECT page_id FROM wiki_page ORDER BY page_latest");
        while( $row = $dbr->fetchObject( $result ) ) {              
        foreach($row as $page_id){$m_array = array($page_id);}
        }
        $title = Title::newFromText( $wgRequest->getVal( 'title' ) );
        $categories = $title->getParentCategories();

    if(in_array($id, $m_array)){
        if($wgTitle == "Main Page"){} 
        foreach ($categories as $category => $article_title){
         elseif($category == 'Category:Portal'){ echo "no ads";}
        }       
        else{echo 'show ads';}
    } 
    ?>

我不能把elseif放在foreach循环中但是如何指定$ category子句?如果我将整个代码包装在foreach循环中,那么广告会多次显示,因为某些页面有多个类别。

(mediawiki网站) 感谢

1 个答案:

答案 0 :(得分:0)

使用布尔值存储测试结果。考虑一下:

$ok = $title != 'Main Page';
foreach($categories as $c => $at) $ok = $ok && $c != 'Category:Portal';
if($ok) echo "show ads";
else echo "no ads";