字符串之间的逻辑运算

use*_*428 2 php string

假设你有一些字符串,我应该如何转换它们才能在PHP中对它们使用逻辑运算?它甚至可能吗?

示例:我想要

"x=1"&&"x=0"
Run Code Online (Sandbox Code Playgroud)

返回false.

Bab*_*aba 6

介绍

我注意到你在一个字符串中都有逻辑运算符 &&赋值运算符,=并且你想要评估赋值在字符串中有一个逻辑运算符.说真的,我不知道你是怎么来到这里的,但这very wrong只是用于教育目的

分解

"x=1"  &&  "x=0" = False 
  ^    ^     ^
  |    |     | 
       |     |
X == 1 |     |
       |     |
      AND    |
             |
           X == 0
Run Code Online (Sandbox Code Playgroud)

上述表达式将永远是false因为X不能equal01在同一时间

为了能够进行这样的评估,PHP你需要编写自己的函数,例如logicalString ,你可以用logicalString("x=1")或者像什么来评估表达式logicalString("x=0")

假设

$x = 1; // Imagine value of X 
Run Code Online (Sandbox Code Playgroud)

示例1 &&

// Start Evaluation with &&
if (logicalString("x=1") && logicalString("x=0")) {
    echo "&& - True\n";
} else {
    echo "&& - False\n";
}
Run Code Online (Sandbox Code Playgroud)

输出1

&& - False 
Run Code Online (Sandbox Code Playgroud)

例2 - ||

// Start Evaluation with ||
if (logicalString("x=1") || logicalString("x=0")) {
    echo "|| - True\n";
} else {
    echo "|| - False\n";
}
Run Code Online (Sandbox Code Playgroud)

输出2

|| - True
Run Code Online (Sandbox Code Playgroud)

使用的功能(不在生产中使用请参阅为什么)

function logicalString($str) {
    parse_str($str, $v);
    foreach ( $v as $k => $var ) {
        if (! isset($GLOBALS[$k]) || $GLOBALS[$k] != $var)
            return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

在PHP 4.3.0 - 5.5.0alpha3上看到在线演示