Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical.php
public static function logicalAnd(...$args)
    {
        // Return value
        $returnValue = true;

        // Loop through the arguments
        $aArgs = Functions::flattenArray($args);
        $argCount = -1;
        foreach ($aArgs as $argCount => $arg) {
            // Is it a boolean value?
            if (is_bool($arg)) {
                $returnValue = $returnValue && $arg;
            } elseif ((is_numeric($arg)) && (!is_string($arg))) {
                $returnValue = $returnValue && ($arg != 0);
            } elseif (is_string($arg)) {
                $arg = strtoupper($arg);
                if (($arg == 'TRUE') || ($arg == Calculation::getTRUE())) {
                    $arg = true;
                } elseif (($arg == 'FALSE') || ($arg == Calculation::getFALSE())) {
                    $arg = false;
                } else {
                    return Functions::VALUE();
                }
                $returnValue = $returnValue && ($arg != 0);
            }
        }

        // Return
        if ($argCount < 0) {
            return Functions::VALUE();
        }

        return $returnValue;
    }
public static function logicalAnd(...$args)
    {
        // Return value
        $returnValue = true;

        // Loop through the arguments
        $aArgs = Functions::flattenArray($args);
        $argCount = -1;
        foreach ($aArgs as $argCount => $arg) {
            // Is it a boolean value?
            if (is_bool($arg)) {
                $returnValue = $returnValue && $arg;
            } elseif ((is_numeric($arg)) && (!is_string($arg))) {
                $returnValue = $returnValue && ($arg != 0);
            } elseif (is_string($arg)) {
                $arg = strtoupper($arg);
                if (($arg == 'TRUE') || ($arg == Calculation::getTRUE())) {
                    $arg = true;
                } elseif (($arg == 'FALSE') || ($arg == Calculation::getFALSE())) {
                    $arg = false;
                } else {
                    return Functions::VALUE();
                }
                $returnValue = $returnValue && ($arg != 0);
            }
        }

        // Return
        if ($argCount < 0) {
            return Functions::VALUE();
        }

        return $returnValue;
    }
public static function logicalAnd ( ... $ args ) { // Return value $ returnValue = true ; // Loop through the arguments $ aArgs = Functions :: flattenArray ( $ args ) ; $ argCount = - 1 ; foreach ( $ aArgs as $ argCount => $ arg ) { // Is it a boolean value? if ( is_bool ( $ arg ) ) { $ returnValue = $ returnValue && $ arg ; } elseif ( ( is_numeric ( $ arg ) ) && ( ! is_string ( $ arg ) ) ) { $ returnValue = $ returnValue && ( $ arg != 0 ) ; } elseif ( is_string ( $ arg ) ) { $ arg = strtoupper ( $ arg ) ; if ( ( $ arg == 'TRUE' ) || ( $ arg == Calculation :: getTRUE ( ) ) ) { $ arg = true ; } elseif ( ( $ arg == 'FALSE' ) || ( $ arg == Calculation :: getFALSE ( ) ) ) { $ arg = false ; } else { return Functions :: VALUE ( ) ; } $ returnValue = $ returnValue && ( $ arg != 0 ) ; } } // Return if ( $ argCount < 0 ) { return Functions :: VALUE ( ) ; } return $ returnValue ; }
LOGICAL_AND.

Returns boolean TRUE if all its arguments are TRUE; returns FALSE if one or more argument is FALSE.

Excel Function:
=AND(logical1[,logical2[, ...]])

The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays
or references that contain logical values.

Boolean arguments are treated as True or False as appropriate
Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False
If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds
the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value

@category Logical Functions

@param mixed ...$args Data values

@return bool|string the logical AND of the arguments
LOGICAL_AND .