php Как работает булева алгебра?

Я хочу знать, как работает булева алгебра

а почему это случилось ??

echo 1*1+0*0;
echo "\n";

$part = 1*1+0;
echo $part*0;
echo "\n";

вывод:

1

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;

0

Решение

Когда ты пишешь

echo 1*1+0*0;

PHP использует приоритет оператора решить, как группировать операции. * имеет более высокий приоритет, чем +, так что это рассматривается как:

echo (1*1) + (0*0);

что упрощает:

echo 1 + 0;

что дополнительно упрощает:

echo 1;

Но когда вы делаете свой цикл, который вызывает chвы не делаете никакой группировки на основе операторов, вы просто выполняете каждую операцию в том порядке, в котором она появляется в $mx массив. Таким образом, ваши операции эквивалентны:

echo ((1 * 1) + 0) * 0;

что упрощает:

echo (1 + 0) * 0;

что эквивалентно:

echo 1 * 0;

который:

echo 0;
0

Другие решения

Других решений пока нет …