为确保您的数组中只有布尔值,请对查询函数返回的值进行双重否定(当然,除非它已经返回真/假)。:
result_array[] = !! $this->db->query($sql);
替代#1
array(true)
您可以找到结果数组 ( )之间的唯一值result_array
,然后使用以下命令查看大小是否等于零array_diff
:
if (sizeof (array_diff (result_array, array (true)) == 0) {
// all went well
}
替代#2
如果您的结果数组仅包含任何一个值,true
或者false
您可以使用array_product
以下方法破解它:
var_dump (array_product (array (true, false, true)));
var_dump (array_product (array (true, true, true)));
输出
int(0)
int(1)
array_product
将数组的所有值相乘,并且由于true
计算为整数 1 和false
整数 0,我们可以利用它来发挥我们的优势。
备选方案#3(不要修改源数组)
您可以使用array_reduce
回调将数组减少为单个值,例如:
if (array_reduce (result_array, function ($a,$b) {return $a && $b;}, true) == true) {
// all went well
}
这会将数组的每个值隐式转换为boolean,并为您提供所需的结果。
内联 lambda 需要更新版本的 PHP,如果 lambda 不可用,可以使用常规函数名称作为回调