$tmp = ((1 or 2) or 4) and 5;
给出对应的信息
1 = 3>5;
2 = 1000>20;
4 = 3<40;
5 = 15>13;
请问,如果程序给出$tmp这样的字符串,我能否得到这个字符串是真还是假?比如说我拿到这个的字符串该如何下手,如何先计算括号内的运算信息?

解决方案 »

  1.   

    $tmp = '(($v1 or $v2) or $v4) and $v5';$v1 = '3>5';
    $v2 = '1000>20';
    $v4 = '3<40';
    $v5 = '15>13';$r = eval("return $tmp;");
    var_dump($r);
    out: boolean true
      

  2.   

    表达式小括号就是优先级高的的,与或非返回boolean
    $c = a || b; //如果 Boolean(a) == true 结果为a,否则为b
    $c = a && b; //如果 Boolean(a) == true 结果为b,否则为a  1 = 3>5;
    2 = 1000>20;
    4 = 3<40;
    5 = 15>13;
    这是什么意思?没明白
      

  3.   


    就这么简单?
    唠叨哥,我这个问题是以前那个字符串用or连接的延伸问题。由于需求改了,所以我让用户自己生成所需要的项,就是类似上面写的$v1,$v2之类的。然后让用户自由组合生成$tmp.我自己有个想法,整了一上午无法实现,麻烦帮我看看。
    如果说$tmp不是用户自己填写,而是程序生成,
    $v1 o $v2  这个项是否要生成一个新的项 假定为 $v6 = $v1.'or' .$v2;
    $v7 = $v6 .'or' $v4;$tmp = $v7 and $v5;
    如果按照程序来设计,是否我需要把所有的组合连接换成最终的连接,也就是$v7这样的,这样做是否利于实现?
      

  4.   

    象这种多变的需求应该由输入
    你或许需要设计一套便于输入的语法 http://hi.baidu.com/cvtenarwcfbjwzd/item/9e3acc1090d5da4be75e06a5