我有这个功能:
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”。
答案 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.'"/>';
}
}
}
编辑:发帖后,我注意到约翰关于===
运算符的回答,我认为这也可能导致问题 - 我第一次没注意到它,所以改了它改为==
。