php布尔代数是如何工作的?
我想知道布尔代数是如何工作的 为什么会发生这种情况php布尔代数是如何工作的?,php,boolean,algebra,Php,Boolean,Algebra,我想知道布尔代数是如何工作的 为什么会发生这种情况 echo 1*1+0*0; echo "\n"; $part = 1*1+0; echo $part*0; echo "\n"; 输出为: 一, 0 如果我有一个这样的数组 $mx[] = array("",1); $mx[] = array("*",1); $mx[] = array("+",0); $mx[] = array("*",0); 如何得到布尔结果 我试过了,但结果是错的 function ch($p1,$p2,$prv)
echo 1*1+0*0;
echo "\n";
$part = 1*1+0;
echo $part*0;
echo "\n";
输出为:
一,
0
如果我有一个这样的数组
$mx[] = array("",1);
$mx[] = array("*",1);
$mx[] = array("+",0);
$mx[] = array("*",0);
如何得到布尔结果
我试过了,但结果是错的
function ch($p1,$p2,$prv) {
$ret = null;
if ($prv == null) {
$ret = $p2;
}
if ($prv != null) {
if ($p1 == "*") {
$ret = $prv*$p2;
}
if ($p1 == "+") {
$ret = $prv+$p2;
}
}
return $ret;
}
$prvx = null;
$mx[] = array("",1);
$mx[] = array("*",1);
$mx[] = array("+",0);
$mx[] = array("*",0);
foreach ($mx as $hit) {
$prvx = ch($hit[0],$hit[1],$prvx);
}
echo $prvx;
当你写作时
echo 1*1+0*0;
PHP利用来决定如何对操作进行分组<代码>*的优先级高于+
,因此将其视为:
echo (1*1) + (0*0);
这简化为:
echo 1 + 0;
echo 1;
echo (1 + 0) * 0;
这进一步简化为:
echo 1 + 0;
echo 1;
echo (1 + 0) * 0;
但是,当您执行调用ch
的循环时,您不会基于运算符进行任何分组,只需按照$mx
数组中显示的顺序执行每个操作。因此,您的操作相当于:
echo ((1 * 1) + 0) * 0;
echo 1 * 0;
这简化为:
echo 1 + 0;
echo 1;
echo (1 + 0) * 0;
这相当于:
echo ((1 * 1) + 0) * 0;
echo 1 * 0;
即:
echo 0;
第一个问题不是关于布尔的:它是简单的算术。欢迎来到堆栈溢出。请尽快阅读这两页。请注意,用多种语言标记一个问题通常是一个坏主意,尤其是当您的问题实际上只涉及其中一种语言时。你很容易引起那些对与问题无关的语言标签感兴趣的人的愤怒。一般只使用一种语言。这里没有关于布尔代数的内容
1和0都是普通数字,你只是在做小学算术。第二个例子让我笑了:foreach($mx作为$hit)
@风向标为什么笑?