php相似度排序

啥也不说,直接上~~~~~

//数组随便写,此次按name相似度排序
$tmpData = [
	[
		'id'=>1,
		'name'=>'诺心 数字蛋糕',
	],
	[
		'id'=>2,
		'name'=>'农夫山泉 茶π饮料',
	],
	[
		'id'=>3,
		'name'=>'诺心 美元蛋糕',
	],
	[
		'id'=>4,
		'name'=>'康师傅 冰红茶',
	],
	[
		'id'=>5,
		'name'=>'诺心 雪域牛乳蛋糕',
	],
	[
		'id'=>6,
		'name'=>'康师傅 红烧牛肉面',
	],
	[
		'id'=>7,
		'name'=>'康师傅 老坛酸菜牛肉面',
	],
	[
		'id'=>8,
		'name'=>'诺心草莓蛋糕',
	],
	[
		'id'=>9,
		'name'=>'诺心提拉米苏乐脆蛋糕',
	],
	[
		'id'=>10,
		'name'=>'诺心草莓蛋糕',
	],
	[
		'id'=>11,
		'name'=>'诺心提拉米苏乐脆蛋糕',
	],
	[
		'id'=>12,
		'name'=>'诺心草莓蛋糕',
	],
];

处理方法:

function similar($array,$name){
    //数组key小于3,直接返回,不符合排序要求(特例,可不写)
	if(count($array)<= 3){
		return $array;
	}
	
    //数组处理
	foreach ($array as $key => $value) {
		similar_text($value['name'], $name,$percent);
		$percent = intval($percent);
		$data[$percent]['id'] = $value['id'];
		$data[$percent]['name'] = $value['name'];
		
	}
    //倒叙
	krsort($data);
	return $data;
}


$res = similar($tmpData,'诺心提拉米');
print_r($res);

OK,看结果,搞定!

array(9) {
  [66]=>
  array(2) {
    ["id"]=>
    int(11)
    ["name"]=>
    string(30) "诺心提拉米苏乐脆蛋糕"
  }
  [58]=>
  array(2) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(19) "诺心 数字蛋糕"
  }
  [54]=>
  array(2) {
    ["id"]=>
    int(12)
    ["name"]=>
    string(18) "诺心草莓蛋糕"
  }
  [47]=>
  array(2) {
    ["id"]=>
    int(3)
    ["name"]=>
    string(19) "诺心 美元蛋糕"
  }
  [40]=>
  array(2) {
    ["id"]=>
    int(5)
    ["name"]=>
    string(25) "诺心 雪域牛乳蛋糕"
  }
  [15]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(24) "农夫山泉 茶π饮料"
  }
  [13]=>
  array(2) {
    ["id"]=>
    int(7)
    ["name"]=>
    string(31) "康师傅 老坛酸菜牛肉面"
  }
  [11]=>
  array(2) {
    ["id"]=>
    int(4)
    ["name"]=>
    string(19) "康师傅 冰红茶"
  }
  [10]=>
  array(2) {
    ["id"]=>
    int(6)
    ["name"]=>
    string(25) "康师傅 红烧牛肉面"
  }
}

猜你喜欢

转载自blog.csdn.net/qq_40816112/article/details/81781947