·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> php版的求表达式的真值表-TrueValueTable

php版的求表达式的真值表-TrueValueTable

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php版的求表达式的真值表-TrueValueTable

psb

贴上代码:

<?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<='Z'){                $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."<br />";        $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;            }?><!DOCTYPE html><html>    <head>        <meta charset="utf-8" />        <title>真值表查询1.0    BY:小臻</title>    </head>    <body>    <span style="color:red;text-align:center;"><h1>真值表查询1.0    BY:小臻</h1></span>    <div style="width:500px;margin:30px auto 0 auto;text-align:center;">                <form action="" method="get">            <input type="text" name="TrueTable" value="<?php echo $_GET['TrueTable'] ?>"/>            <input type="submit" value="确定"/>    <br />    <br />            <!--<input type="reset" value="取消" /><br /><br />            <input type="button" value="∨" />            <input type="button" value="∧" />            <input type="button" value="┐" />            <input type="button" value="→" />            <input type="button" value="↔" /><br /><br />-->        </form>        <!--[ 说明:析取(∨) , 合取(∧) , 非(┐) , 蕴含(→) , 等价(↔) ]-->        <p>[ 说明:析取(|) , 合取(&) , 非(!) , 蕴含(->) , 等价(=) ]</p>            <table width="300px" style="margin:30px auto 0 auto;text-align:center;border:1px solid #000;">                <?php                    echo "<tr>";                    if(!empty($_GET['TrueTable'])){                        foreach($varTotal as $v){                            echo "<td>{$v}</td>";                        }                                            echo "<td>结果</td>";                        $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 "<tr>";                            foreach($resultN[$k] as $k1=>$v1){                                echo "<td>".$v1."</td>";                                $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 "<td>".$varTotal3[$k]."</td>";                            echo "</tr>";                                    }                        //print_r($varTotal3);                    }                                ?>                </table>    </div>    </body></html>