// 对多选的url进行处理转换 可以执行的查询 // url格式 search[acreage][]=15,40&search[acreage][]=40,50&search[acreage][]=50,60&search[price][]=2000,5000&search[price][]=5000,8000 $searches = []; foreach (Yii::$app->getRequest()->get('search',[]) as $i=>$item){ if(empty($item)) continue; $group = []; foreach ($item as $v){ $group[] = $i.','.$v; } $searches[] = array_unique($group); } function filterHandel($searches,$index = 0,$parent = []){ $arr = []; $count = count($searches)-1; foreach ($searches[$index] as $item){ $curr = array_merge($parent,[$item]); if($count>$index){ $arr = array_merge($arr,filterHandel($searches,$index+1,$curr)); }else{ $arr[] = $curr; } } return $arr; } // 处理成交叉数组 var_dump(filterHandel($searches)); // 打印结果 /* array(6) { [0] => array(2) { [0] => string(13) "acreage,15,40" [1] => string(15) "price,2000,5000" } [1] => array(2) { [0] => string(13) "acreage,15,40" [1] => string(15) "price,5000,8000" } [2] => array(2) { [0] => string(13) "acreage,40,50" [1] => string(15) "price,2000,5000" } [3] => array(2) { [0] => string(13) "acreage,40,50" [1] => string(15) "price,5000,8000" } [4] => array(2) { [0] => string(13) "acreage,50,60" [1] => string(15) "price,2000,5000" } [5] => array(2) { [0] => string(13) "acreage,50,60" [1] => string(15) "price,5000,8000" } } */ // 此时把打印结果 组合成or语句就可以使用了