/**
* 按标题和关键字搜索商品
*/
public function searchProk(){
$keywords=I("get.keyword"); //获取关键词
$keywords = urldecode($keywords); //对关键词进行转义
preg_match_all("/./u", $keywords, $key_list); //拆分关键词成为一个个词,支持中文
foreach ($key_list[0] as $key => $value) { //创建搜索条件
$map['title|keywords'][]=array("like","%".$value."%");
}
$map['title|keywords'][] = "or";
$data=M("product")->where($map)->select(); //查询数据
foreach ($data as $k => $v) { //对数据进行循环计算,包含1个关键词,$data[$k]["orders"]加1,包含第二个,再加一
$data[$k]["orders"]=0; //初始化$data[$k]["orders"]
foreach ($key_list[0] as $k1 => $v1) {
$check_k=strstr($v['keywords'],$v1);
$check_t=strstr($v['title'],$v1);
if($check_t || $check_k)
$data[$k]["orders"]+=1;
}
}
function array_sort($array, $on, $order=SORT_ASC){ //这个函数是php.net复制来的,是对数组进行排序
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
$data=array_sort($data, 'orders', SORT_DESC); //对数组根据orders进行排序
echo "<pre>";
print_r($data);
} 最佳答案