src/Carbon/CarbonInterval.php
public function total($unit)
    {
        $realUnit = $unit = strtolower($unit);

        if (in_array($unit, ['days', 'weeks'])) {
            $realUnit = 'dayz';
        } elseif (!in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) {
            throw new InvalidArgumentException("Unknown unit '$unit'.");
        }

        $result = 0;
        $cumulativeFactor = 0;
        $unitFound = false;
        $factors = static::getFlipCascadeFactors();

        foreach ($factors as $source => [$target, $factor]) {
            if ($source === $realUnit) {
                $unitFound = true;
                $value = $this->$source;
                if ($source === 'microseconds' && isset($factors['milliseconds'])) {
                    $value %= Carbon::MICROSECONDS_PER_MILLISECOND;
                }
                $result += $value;
                $cumulativeFactor = 1;
            }

            if ($factor === false) {
                if ($unitFound) {
                    break;
                }

                $result = 0;
                $cumulativeFactor = 0;

                continue;
            }

            if ($target === $realUnit) {
                $unitFound = true;
            }

            if ($cumulativeFactor) {
                $cumulativeFactor *= $factor;
                $result += $this->$target * $cumulativeFactor;

                continue;
            }

            $value = $this->$source;

            if ($source === 'microseconds' && isset($factors['milliseconds'])) {
                $value %= Carbon::MICROSECONDS_PER_MILLISECOND;
            }

            $result = ($result + $value) / $factor;
        }

        if (isset($target) && !$cumulativeFactor) {
            $result += $this->$target;
        }

        if (!$unitFound) {
            throw new \InvalidArgumentException("Unit $unit have no configuration to get total from other units.");
        }

        if ($unit === 'weeks') {
            return $result / static::getDaysPerWeek();
        }

        return $result;
    }
public function total($unit)
    {
        $realUnit = $unit = strtolower($unit);

        if (in_array($unit, ['days', 'weeks'])) {
            $realUnit = 'dayz';
        } elseif (!in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) {
            throw new InvalidArgumentException("Unknown unit '$unit'.");
        }

        $result = 0;
        $cumulativeFactor = 0;
        $unitFound = false;
        $factors = static::getFlipCascadeFactors();

        foreach ($factors as $source => [$target, $factor]) {
            if ($source === $realUnit) {
                $unitFound = true;
                $value = $this->$source;
                if ($source === 'microseconds' && isset($factors['milliseconds'])) {
                    $value %= Carbon::MICROSECONDS_PER_MILLISECOND;
                }
                $result += $value;
                $cumulativeFactor = 1;
            }

            if ($factor === false) {
                if ($unitFound) {
                    break;
                }

                $result = 0;
                $cumulativeFactor = 0;

                continue;
            }

            if ($target === $realUnit) {
                $unitFound = true;
            }

            if ($cumulativeFactor) {
                $cumulativeFactor *= $factor;
                $result += $this->$target * $cumulativeFactor;

                continue;
            }

            $value = $this->$source;

            if ($source === 'microseconds' && isset($factors['milliseconds'])) {
                $value %= Carbon::MICROSECONDS_PER_MILLISECOND;
            }

            $result = ($result + $value) / $factor;
        }

        if (isset($target) && !$cumulativeFactor) {
            $result += $this->$target;
        }

        if (!$unitFound) {
            throw new \InvalidArgumentException("Unit $unit have no configuration to get total from other units.");
        }

        if ($unit === 'weeks') {
            return $result / static::getDaysPerWeek();
        }

        return $result;
    }
public function total ( $ unit ) { $ realUnit = $ unit = strtolower ( $ unit ) ; if ( in_array ( $ unit , [ 'days' , 'weeks' ] ) ) { $ realUnit = 'dayz' ; } elseif ( ! in_array ( $ unit , [ 'microseconds' , 'milliseconds' , 'seconds' , 'minutes' , 'hours' , 'dayz' , 'months' , 'years' ] ) ) { throw new InvalidArgumentException ( "Unknown unit '$unit'." ) ; } $ result = 0 ; $ cumulativeFactor = 0 ; $ unitFound = false ; $ factors = static :: getFlipCascadeFactors ( ) ; foreach ( $ factors as $ source => [ $ target , $ factor ] ) { if ( $ source === $ realUnit ) { $ unitFound = true ; $ value = $ this -> $ source ; if ( $ source === 'microseconds' && isset ( $ factors [ 'milliseconds' ] ) ) { $ value %= Carbon :: MICROSECONDS_PER_MILLISECOND ; } $ result += $ value ; $ cumulativeFactor = 1 ; } if ( $ factor === false ) { if ( $ unitFound ) { break ; } $ result = 0 ; $ cumulativeFactor = 0 ; continue ; } if ( $ target === $ realUnit ) { $ unitFound = true ; } if ( $ cumulativeFactor ) { $ cumulativeFactor *= $ factor ; $ result += $ this -> $ target * $ cumulativeFactor ; continue ; } $ value = $ this -> $ source ; if ( $ source === 'microseconds' && isset ( $ factors [ 'milliseconds' ] ) ) { $ value %= Carbon :: MICROSECONDS_PER_MILLISECOND ; } $ result = ( $ result + $ value ) / $ factor ; } if ( isset ( $ target ) && ! $ cumulativeFactor ) { $ result += $ this -> $ target ; } if ( ! $ unitFound ) { throw new \ InvalidArgumentException ( "Unit $unit have no configuration to get total from other units." ) ; } if ( $ unit === 'weeks' ) { return $ result / static :: getDaysPerWeek ( ) ; } return $ result ; }
Get amount of given unit equivalent to the interval.

@param string $unit

@throws \InvalidArgumentException

@return float
Get amount of given unit equivalent to the interval .