Notepad++Good Luck To You!

php动态匹配表达式
浏览: 2251    评论: 0

<?php/*CREATETABLE`baseinfo`(`id`int(11)NOTNULLAUTO_INCREMENT,`企业名称`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=MyISAM...


<?php


/*


CREATE TABLE `baseinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `企业名称` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;


CREATE TABLE `企业资质表` (
  `企业id` int(11) NOT NULL,
  `条目` varchar(255) DEFAULT NULL,
  `数值` int(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `政策表` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `政策名` varchar(255) DEFAULT NULL,
  `政策内容` varchar(255) DEFAULT NULL,
  `包含条件` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `政策条件` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `条目` varchar(255) DEFAULT NULL,
  `条件` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;



*/

//条件
//根据政策id,查询条件库内相关条件


$total_score=100;


$cond=array(
  0=>array('id'=>1,'条目'=>'注册资金','条件'=>'>=2000'),
  1=>array('id'=>1,'条目'=>'注册时间','条件'=>'<=2016'),
  2=>array('id'=>1,'条目'=>'法人姓名','条件'=>'<=2016'),
  3=>array('id'=>1,'条目'=>'汽车数量','条件'=>'>=200'),
  4=>array('id'=>1,'条目'=>'老婆数量','条件'=>'<=1000'),
  5=>array('id'=>1,'条目'=>'存款数量','条件'=>'>=2000')
);

$condArray=[];

//组装条件数组便于对比
foreach ($cond as $value) {
    $condArray[$value['条目']]=$value['条件'];
}


// array (size=2)
//   '注册资金' => '>=2000'
//   '注册时间' => '<2016'

//var_dump($condArray);


//查询企业数据
$company=array(
    array('条目'=>'注册资金','数值'=>2000),
    array('条目'=>'注册时间','数值'=>2016),
    array('条目'=>'科研人员','数值'=>200),
	array('条目'=>'今年产值','数值'=>1000),
  );
  
  
var_dump(array_diff($cond,$company));die;
  
 $companyDetail=[];

 //组装企业数据便于查询
foreach ($company as $val) {
    $companyDetail[$val['条目']]=$val['数值'];
}

// array (size=3)
//   '注册资金' => int 2000
//   '注册时间' => int 2016
//   '科研人员' => int 200

//var_dump($companyDetail);

$ErrorResult=[];

//遍历条件数组,和企业数据中的项目进行匹配,使用eval执行条件判断
foreach ($condArray as $key=>$val) {
	
    echo $key.$val.PHP_EOL;

	if(isset($companyDetail[$key])){ 
		
		$cd=$companyDetail[$key].$val; 
	}else{
		$ErrorResult[]=$key;
		echo "<br>[{$key}]未填写,为准确匹配,请填写企业的[{$key}]资料<br>";
		continue;
	}

	$pattern = '/(\d+)([\>\=\<]*)(\d+)/';	
	
	preg_match($pattern, $cd, $parseResult);	
	
	var_dump($parseResult);
	
	$result=checkParse($parseResult);
	
    $result= $result==true ? " 匹配" : " 不匹配";

    echo "[{$cd}]".$result."<br><br>";		
	
}

$total_score=round($total_score-($total_score/count($condArray)*count($ErrorResult)),2);

echo "匹配程度:".$total_score."%";

function checkParse($parseResult){
	switch($parseResult[2]){
		case "<":
			return $parseResult[1]<$parseResult[3];
			break;
		case "<=":
			return $parseResult[1]<=$parseResult[3];
			break;
		case ">=":
			return $parseResult[1]>=$parseResult[3];
			break;
		case "=":
			return $parseResult[1]==$parseResult[3];
			break;
		default:
			return false;
	}
}


全文详见:http://xpxw.com/?id=84

TOP


«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031
TOP 搜索
TOP 控制面板
您好,欢迎到访网站!
  查看权限
TOP 最新留言
    TOP 作者列表
    TOP 站点信息
    • 文章总数:163
    • 页面总数:0
    • 分类总数:6
    • 标签总数:20
    • 评论总数:0
    • 浏览总数:361552