WooCommerce Code Reference

NumberUtil
in package

A class of utilities for dealing with numbers.

Table of Contents

array_sum()  : float
Get the sum of an array of values using the built-in array_sum function, but sanitize the array values first to ensure they are all floats.
round()  : float
Round a number using the built-in `round` function, but unless the value to round is numeric (a number or a string that can be parsed as a number), apply 'floatval' first to it (so it will convert it to 0 in most cases).

Methods

array_sum()

Get the sum of an array of values using the built-in array_sum function, but sanitize the array values first to ensure they are all floats.

public static array_sum(array<string|int, mixed> $arr) : float

This is needed because in PHP 8.3 non-numeric values that cannot be cast as an int or a float will cause an E_WARNING to be emitted. Prior to PHP 8.3 these values were just ignored.

Note that, unlike the built-in array_sum, this one will always return a float, never an int.

Parameters
$arr : array<string|int, mixed>

The array of values to sum.

Return values
float

round()

Round a number using the built-in `round` function, but unless the value to round is numeric (a number or a string that can be parsed as a number), apply 'floatval' first to it (so it will convert it to 0 in most cases).

public static round(mixed $val, int $precision[, int $mode = PHP_ROUND_HALF_UP ]) : float

This is needed because in PHP 7 applying round to a non-numeric value returns 0, but in PHP 8 it throws an error. Specifically, in WooCommerce we have a few places where round('') is often executed.

Parameters
$val : mixed

The value to round.

$precision : int

The optional number of decimal digits to round to.

$mode : int = PHP_ROUND_HALF_UP

A constant to specify the mode in which rounding occurs.

Return values
floatThe value rounded to the given precision as a float, or the supplied default value.