函数文档

absint()

💡 云策文档标注

概述

absint() 是 WordPress 核心函数,用于将任意值转换为非负整数。它通过强制类型转换和取绝对值操作,确保返回结果始终为非负整数,常用于数据验证和清理场景。

关键要点

  • 函数接受一个参数 $maybeint,可以是任意类型的数据,返回一个非负整数。
  • 内部实现为 abs((int) $maybeint),先强制转换为整数,再取绝对值。
  • 广泛用于 WordPress 核心代码中,涉及用户查询、REST API、媒体处理、数据库操作等多个模块。
  • 对于浮点数、布尔值、数组、NULL 等特殊输入,转换规则遵循 PHP 的强制类型转换逻辑。
  • 使用时需注意浮点数计算可能因 PHP 舍入错误导致意外结果,如 19.99 * 100 返回 1998 而非 1999。

代码示例

echo absint(20.33);            // 20
echo absint(-20.33);           // 20
echo absint(false);            // 0
echo absint(true);             // 1
echo absint(array(10,20,30)); // 1
echo absint(NULL);             // 0

注意事项

  • 非整数字符串(如 'number')会返回 0,而负整数字符串(如 '-10')会返回正整数值 10。
  • 由于 PHP 浮点数精度问题,涉及浮点运算时可能产生非预期结果,建议在计算前进行精度处理。
  • 函数自 WordPress 2.5.0 版本引入,稳定可靠,但需根据具体使用场景考虑数据类型转换的边界情况。

📄 原文内容

Converts a value to non-negative integer.

Parameters

$maybeintmixedrequired
Data you wish to have converted to a non-negative integer.

Return

int A non-negative integer.

Source

function absint( $maybeint ) {
	return abs( (int) $maybeint );
}

Changelog

Version Description
2.5.0 Introduced.

User Contributed Notes

  1. Skip to note 8 content

    As to math and floating numbers there are results to consider when using absint(). Here are some tests.

    echo '<ul>
    <li>0      returns '. absint( 0 ) . '</li>  
    <li>1      returns '. absint( 1 ) . '</li>
    <li>-1     returns '. absint( -1 ) . '</li>
    <li>-1 + 1 returns '. absint( (-1 + 1) ) . '</li>
    <li>1 * -1 returns '. absint( (1 * -1) ) . '</li>
    <li>1 / -1 returns '. absint( (1 / -1) ) . '</li>
    <li>1 - 1  returns '. absint( (1 - 1) ) . '</li>
    <li>0 * -1 returns '. absint( (0 * -1) ) . '</li>
    <li>0 / 1  returns '. absint( (0 / 1) ) . '</li>
    <li>0 - 1  returns '. absint( (0 - 1) ) . '</li>
    <li>0.99 * 1  returns '. absint( (0.99 * 1) ) . '</li>
    <li>1.99 * 1  returns '. absint( (1.99 * 1) ) . '</li>
    <li>0.99 / 1  returns '. absint( (0.99 / 1) ) . '</li>
    <li>1.99 / 1  returns '. absint( (1.99 / 1) ) . '</li>
    </ul>';

    Prints:
    <br />
    0 returns 0<br />
    1 returns 1<br />
    -1 returns 1<br />
    -1 + 1 returns 0<br />
    1 * -1 returns 1<br />
    1 / -1 returns 1<br />
    1 - 1 returns 0<br />
    0 * -1 returns 0<br />
    0 / 1 returns 0<br />
    0 - 1 returns 1<br />
    0.99 * 1 returns 0<br />
    1.99 * 1 returns 1<br />
    0.99 / 1 returns 0<br />
    1.99 / 1 returns 1<br />