如何在数组中循环并使用if语句中的每个值

时间:2014-05-27 12:27:00

标签: php loops if-statement foreach

我有这个功能:

public function onK2AfterDisplayContent(&$item,&$params,$limitstart)
{   
    $cat_id = $this->params['cat_ids'];
    explode(',', $cat_id);

    $view = JRequest::getVar('view');

    if($view === 'item' && $item->catid === $cat_id){
        $db = JFactory::getDbo();
        $query = 'SELECT name FROM #__k2_categories WHERE id='.$item->catid;
        $db->setQuery($query);
        $resultado = $db->loadResult();

        echo '<input class="subscribete" type="button" id="'.$resultado.'-'.$item->id.'" value="Subscribete" data-id="'.$item->id.'"/>';    
    }
}

变量$cat_id可以带来不同数量的值(1或1,2,3,没有等等)。我的if语句只应在$item->catid中存在其中一个值时输入。我怎么能做到这一点?

编辑$item->catid只能是单个值,例如“1”。

2 个答案:

答案 0 :(得分:3)

您可以使用in_array

$cat_id = explode(',', $this->params['cat_ids']);
// Don't forget to assign the explode to a value. Otherwise, it won't be usefull...

if (in_array($item->catid, $cat_id)) {
    // Do something
}

答案 1 :(得分:0)

首先,你没有将爆炸分配给任何东西,所以代码中没有任何变化:

explode(',', $cat_id);

其次,如果你确定了它,你可以做一个简单的foreach语句来查看出来的每一位数据。

public function onK2AfterDisplayContent(&$item,&$params,$limitstart)
{   
    $cat_id = $this->params['cat_ids'];
    $carArr=explode(',', $cat_id);

    $view = JRequest::getVar('view');

    foreach($catArr as $val)
    {
        if($view == 'item' && $item->catid == $cat_id){
        $db = JFactory::getDbo();
        $query = 'SELECT name FROM #__k2_categories WHERE id='.$item->catid;
        $db->setQuery($query);
        $resultado = $db->loadResult();

        echo '<input class="subscribete" type="button" id="'.$resultado.'-'.$item->id.'" value="Subscribete" data-id="'.$item->id.'"/>';    

    }

    }
}

编辑:发帖后,我注意到约翰关于===运算符的回答,我认为这也可能导致问题 - 我第一次没注意到它,所以改了它改为==