假设你有一些字符串,我应该如何转换它们才能在PHP中对它们使用逻辑运算?它甚至可能吗?
示例:我想要
"x=1"&&"x=0"
Run Code Online (Sandbox Code Playgroud)
返回false.
介绍
我注意到你在一个字符串中都有逻辑运算符 &&和赋值运算符,=并且你想要评估赋值在字符串中有一个逻辑运算符.说真的,我不知道你是怎么来到这里的,但这very wrong只是用于教育目的
分解
"x=1" && "x=0" = False
^ ^ ^
| | |
| |
X == 1 | |
| |
AND |
|
X == 0
Run Code Online (Sandbox Code Playgroud)
上述表达式将永远是false因为X不能equal以0和1在同一时间
为了能够进行这样的评估,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上看到在线演示