假设你有一些字符串,我应该如何转换它们才能在PHP中对它们使用逻辑运算?它甚至可能吗?
示例:我想要
"x=1"&&"x=0"
返回false
。
答案 0 :(得分:5)
简介
我注意到您在字符串&&
中同时拥有Logical Operator =
和Assignment Operator,并且您想要评估分配在字符串中是否有逻辑运算符。说真的,我不知道你是怎么来到这里的,但这是very wrong
但是用于教育目的标签
细分
"x=1" && "x=0" = False
^ ^ ^
| | |
| |
X == 1 | |
| |
AND |
|
X == 0
上述表达始终为false
,因为X
不能equal
同时0
和1
为了能够在PHP
中进行此类评估,您需要编写自己的函数,例如logicalString
,您可以使用logicalString("x=1")
或logicalString("x=0")
<来评估表达式/ p>
假设
$x = 1; // Imagine value of X
示例1&amp;&amp;
// Start Evaluation with &&
if (logicalString("x=1") && logicalString("x=0")) {
echo "&& - True\n";
} else {
echo "&& - False\n";
}
输出1
&& - False
示例2 - ||
// Start Evaluation with ||
if (logicalString("x=1") || logicalString("x=0")) {
echo "|| - True\n";
} else {
echo "|| - False\n";
}
输出2
|| - True
使用的功能( Not to be used in production See Why )
function logicalString($str) {
parse_str($str, $v);
foreach ( $v as $k => $var ) {
if (! isset($GLOBALS[$k]) || $GLOBALS[$k] != $var)
return false;
}
return true;
}
答案 1 :(得分:2)
根据给定的信息,让我解释一下发生了什么?
if("x=1"&&"x=0")
{
echo "true";
}
else
{
echo "false";
}
将输出
true
你正在努力实现的目标不是虚荣。 String不是逻辑表达式,逻辑表达式由一个或多个逻辑运算符以及逻辑,数字或关系操作数组成。 Read more
以上代码的作用与以下相同
if("string1" && "string2")
{
echo "true";
}
else
{
echo "false";
}
它根本不关心那里有什么。所有它关心的是有两个非空的字符串。
if("" && "")
{
echo "true";
}
else
{
echo "false";
}
上面的将返回false
。
结论
String始终是字符串而不是逻辑运算符。
答案 2 :(得分:2)
我认为完成任务的最佳方法是使用这样的自定义函数eval()方法:
<?php
function checkValues($var1, $var2) {
if ($var1==1 && $var2==1) {
echo "Both values are equal to 1";
} else {
echo "At least one value is not equal to 1";
}
}
$x = 1;
$y = 1;
$z = 2;
$z3 = 1;
eval("checkValues($x, $y);"); // Both values are equal to 1
eval("checkValues($x, $z);"); // At least one value is not equal to 1
/* The eval parameter is a string so you can play with it.
* Don't forget the semicolon ";";
*/
eval("checkValues($x, $z" . 3 . ");"); // Both values are equal to 1
?>
答案 3 :(得分:2)
您可以使用:
//Returns True if strings are equal, false otherwise
(bool)!strcmp($str1, $str2);
将其包裹在一个函数中并进行设置。