贴上代码:
php error_reporting(e_all & ~e_notice); $expression=$_get['truetable']; //读取输入框数据 if(!empty($_get['truetable'])){ $expression=strtoupper($expression); //将输入的小写字母,替代成大写字母 $expressionarr=str_split($expression); //将$expression转换成数组 foreach($expressionarr as $v){ //把字母放在 $vartotal数组中 if($v>='a' && $v){ $vartotal[]=$v; } } $vartotal = array_unique($vartotal); //去掉$vartotal数组中重复的字母 sort($vartotal); //$vartotal数组中字母正向排序 $vartotal1 = preg_replace(/([a-z])/,$\\1,$vartotal); //$vartotal1数组中字母变成变量 $maxn = count($vartotal); //$expressionarr = preg_replace(/([a-z])/,$\\1,$expressionarr); //$expressionarr数组中字母变成变量 $newexpression=implode('',$expressionarr); //$expressionarr数组变成字符串 //echo $newexpression.
; $newexpression= preg_replace(/([a-z])->([a-z])/,!\\1|\\2,$newexpression); $newexpression= preg_replace(/(\(.*?\))->([a-z])/,!\\1|\\2,$newexpression); $newexpression= preg_replace(/(\(.*?\))->(.*?)/,!\\1|\\2,$newexpression); $newexpression= preg_replace(/([a-z])->(.*?)/,!\\1|\\2,$newexpression); $expressionarr=str_split($newexpression); //将$expression转换成数组 $expressionarr = preg_replace(/([a-z])/,$\\1,$expressionarr); $newexpression=implode('',$expressionarr); //echo $newexpression; }?> 真值表查询1.0 by:小臻真值表查询1.0 by:小臻
[ 说明:析取(|) , 合取(&) , 非(!) , 蕴含(->) , 等价(=) ]
php echo ; if(!empty($_get['truetable'])){ foreach($vartotal as $v){ echo {$v} ; } echo 结果 ; $result=pow(2,$maxn); for($i=0;$i$result;$i++){ $resultn[$i]=sprintf(%0{$maxn}d,decbin($i)); $resultn[$i]=str_split($resultn[$i]); } foreach($resultn as $k=>$v){ echo
; foreach($resultn[$k] as $k1=>$v1){ echo .$v1. ; $vartotal2[$k1]=$vartotal1[$k1].=.$v1; //echo $vartotal2[$k1]. ; eval($vartotal2[$k1].;); } //echo $newexpression; eval(\$vartotal3[] = .$newexpression.;); foreach($vartotal3 as $k2=>$v){ if($v==null){ $vartotal3[$k2]=0; } } echo .$vartotal3[$k]. ; echo
; } //print_r($vartotal3); } ?>
以上就介绍了php版的求表达式的真值表-truevaluetable,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
