• 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="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>
  • 相关阅读:
    WCF与 Web Service的区别是什么?各自的优点在哪里呢?
    asp、asp.net、ado、ado.net各自区别和联系?
    SQL触发器 inset自学经验
    SQL触发器实例讲解
    特价汇9.9元商品
    sql中数据库连接与断开式连接有什么区别?
    终止线程的三种方法
    selenium设置代理,基于chrome浏览器
    Selenium Webdriver定位元素的几种方式
    spring常用接口 InitializingBean的作用
  • 原文地址:https://www.cnblogs.com/Zengineer/p/True-Value-Table.html
Copyright © 2020-2023  润新知