总结数组搜索条件的两种状况

第一种:当咱们传过来的搜索条件是一个数组的时候,以下图php



像这样的状况,能够这样处理,css

由于sql语句支持in类型,也就是说支持下面这种搜索,sql

$cateStr = '(1,2,3)'; 
$ArticleInfo = Article::model() -> findAll("article_category_id in {$cateStr});

那么,就要想办法凑出$cateStr变量的格式,

$cateStr = '(' . implode(',', array_values($search['article_category_id'])) . ')';

参与搜索的话,就能够很方便了,以下,

if( $search['wasteStage'] )
{
	$str = '(' . implode(',', array_values($search['wasteStage'])) . ')';
	$wasteRecordModel = WasteRecord::model() -> findAll("waste_stage in {$str}");
	$wasteRecordStageList = array();
	foreach ( (array) $wasteRecordModel as $key => $val )
	{
		$wasteRecordStageList[$key] = $val -> yuyue_id;
	}
	$criteria -> addInCondition('yuyueVisit.yuyue_id', $wasteRecordStageList);
}


第二种状况,自定义的数组是从0开始的,好比说是这样的,


但是由于产品的变态需求,页面要的是这样的,数组



前面这个所有,咱们该怎么处理,用全等“===”来断定null,也能够,可是更变态的来了,页面中须要控制css样式,这样就很难维持选中的css样式,this

个人方法是这样的,以下图:spa

$wasteReasonKeys = array_keys($this -> _wasteReason);
foreach( $wasteReasonKeys as $key => $val)
{
<span style="white-space:pre">	</span>$wasteReasonNewKeys[$key] = $val +1;
}
$wasteReasonNewValues = array_values($this -> _wasteReason);
$wasteReasonList = array_combine($wasteReasonNewKeys, $wasteReasonNewValues);


处理结果以下,


key值就是从1开始了,这样,判断条件是所有的时候,就依然能够用0来判断了。code

固然了,做为搜索条件,确定要符合系统中的key值才能够,因此在搜索的时候须要进一步处理,以下,
产品


if( $search['wasteReason'] )
{
<span style="white-space:pre">	</span>$wasteReasonId = intval($search['wasteReason']) - 1;  //这里获得的值必需要减去1,由于在上面作了加1的处理。
    	if( $wasteReasonId >= 0 )
    	{
    		$yuyueId = WasteRecord::model() -> findAll("waste_status = '{$wasteReasonId}'");
	<span style="white-space:pre">	</span>$yuyueIdArr = array();
	    	foreach ( (array) $yuyueId as $key => $val )
	    	{
	    		$yuyueIdArr[$key] = $val -> yuyue_id;
	    	}
	    	$criteria -> addInCondition('yuyue.yuyue_id', $yuyueIdArr);
    	}
}
相关文章
相关标签/搜索