You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中数组所有元素按位与运算的实现逻辑与方法

在PHP中计算数组所有元素的按位与结果

核心逻辑

连续按位与的本质是累积运算:从数组的第一个元素开始,将它作为初始结果,然后依次和数组中剩余的每个元素执行&(按位与)操作,每一步的运算结果作为下一次运算的左操作数,直到遍历完所有元素。

这里还有个实用的优化点:按位与运算中,如果某一步的结果变成0,那么后续所有元素和0按位与的结果都会是0,所以可以提前终止运算,避免不必要的遍历(尤其适合大数组场景)。

具体实现方式

方式1:手动循环实现(支持提前终止)

这种方式逻辑清晰,能灵活控制运算流程,适合需要精细优化的场景:

$array = [11, 11, 13, 18, 19];

// 处理空数组的边界情况
if (empty($array)) {
    // 可根据业务需求返回默认值,比如0或抛出异常
    $result = 0;
} else {
    $result = $array[0]; // 初始化结果为第一个元素
    $length = count($array);
    
    for ($i = 1; $i < $length; $i++) {
        $result &= $array[$i];
        // 提前终止:结果为0时无需继续运算
        if ($result === 0) {
            break;
        }
    }
}

echo $result; // 输出:2

方式2:使用array_reduce函数(简洁写法)

PHP的array_reduce函数专门用于处理这种累积式的数组运算,代码更简洁,无需手动编写循环:

$array = [11, 11, 13, 18, 19];

// 处理非空数组的情况
$result = array_reduce($array, function($carry, $item) {
    return $carry & $item;
});

// 如果需要兼容空数组,可传入初始值(PHP_INT_MAX是全1的整数,按位与后不改变第一个元素的值)
$result = array_reduce(
    $array,
    fn($carry, $item) => $carry & $item,
    PHP_INT_MAX
);

echo $result; // 输出:2

结果验证

我们手动拆解示例数组的运算过程:

  1. 11 & 11 = 11
  2. 11 & 13 = 9
  3. 9 & 18 = 2
  4. 2 & 19 = 2
    最终结果确实是2,和代码运行结果一致。

内容的提问来源于stack exchange,提问作者Adern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:07:32