嵌套布尔值的布尔结果
Boolean result of the nested boolean values
我正在建模一个访问函数,它应该 return 基于嵌套数组上的下一个结构的布尔值,它只包含布尔值:
- 基于维度,应该进行 OR 或 AND 类型的比较
- 一级为或,下一级为与,下一级为或,依此类推
- 最终结果应该return TRUE 或 FALSE
例如,我有这些具有预期结果的数组:
array(TRUE) -> TRUE
array(FALSE) -> FALSE
显然...
array(TRUE, FALSE) -> TRUE
因为真 |错误
array(TRUE, array(FALSE)) -> TRUE
因为真 | (错误)
array(FALSE, array(FALSE, TRUE)) -> FALSE
因为假 | (假 && 真)
array(FALSE, array(TRUE, array(FALSE, TRUE))) -> TRUE
因为假 | (真 && (假 | 真))
我在这里所做的只是更改嵌套数组的每一层的比较方法。
PHP 语言示例会很好,但我可以转移到 PHP 的任何原型都被接受为答案。
这是一个相互递归的例子,使用array_reduce函数
do_or
对整个数组应用 OR
运算符
do_and
对整个数组应用 AND
运算符
- 如果数组的元素是数组本身,则函数相互应用
代码:
function do_or($x,$y)
{
if (is_array($y))
{
if (empty($y))
{$y=FALSE;}
else
{$y=array_reduce($y,"do_and",TRUE);}
}
return $x||$y;
}
function do_and($x,$y)
{
if (is_array($y))
{
if (empty($y))
{$y=TRUE;}
else
{$y=array_reduce($y,"do_or",FALSE);}
}
return $x && $y;
}
$answer=array_reduce($arr,"do_or",FALSE);
这段代码可以优化,但我想它说明了这个想法
我正在建模一个访问函数,它应该 return 基于嵌套数组上的下一个结构的布尔值,它只包含布尔值:
- 基于维度,应该进行 OR 或 AND 类型的比较
- 一级为或,下一级为与,下一级为或,依此类推
- 最终结果应该return TRUE 或 FALSE
例如,我有这些具有预期结果的数组:
array(TRUE) -> TRUE
array(FALSE) -> FALSE
显然...
array(TRUE, FALSE) -> TRUE
因为真 |错误
array(TRUE, array(FALSE)) -> TRUE
因为真 | (错误)
array(FALSE, array(FALSE, TRUE)) -> FALSE
因为假 | (假 && 真)
array(FALSE, array(TRUE, array(FALSE, TRUE))) -> TRUE
因为假 | (真 && (假 | 真))
我在这里所做的只是更改嵌套数组的每一层的比较方法。
PHP 语言示例会很好,但我可以转移到 PHP 的任何原型都被接受为答案。
这是一个相互递归的例子,使用array_reduce函数
do_or
对整个数组应用OR
运算符do_and
对整个数组应用AND
运算符- 如果数组的元素是数组本身,则函数相互应用
代码:
function do_or($x,$y)
{
if (is_array($y))
{
if (empty($y))
{$y=FALSE;}
else
{$y=array_reduce($y,"do_and",TRUE);}
}
return $x||$y;
}
function do_and($x,$y)
{
if (is_array($y))
{
if (empty($y))
{$y=TRUE;}
else
{$y=array_reduce($y,"do_or",FALSE);}
}
return $x && $y;
}
$answer=array_reduce($arr,"do_or",FALSE);
这段代码可以优化,但我想它说明了这个想法