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)
@风向标为什么笑?