11

我在 PHP 中编写了一个“钳位”数字的函数,但我想知道这个函数是否在语言中原生存在。

我在数学部分阅读了 PHP.net 文档,但找不到。

基本上我的函数所做的是它接受一个变量、一个可能值的数组和一个默认值,这是我的函数的签名:

function clamp_number($value, $possible_values, $default_value)

如果$value不匹配任何一个$possible_values则默认为$default_value

我认为如果 PHP 已经本地提供它,我的函数会更快,因为我在我的程序中经常使用它。

4

2 回答 2

57

似乎您只是想在一组中找到一个数字。一个实际的钳位函数将确保一个数字在 2 个数字内(下限和上限)。因此,psudo 代码将clamp(55, 1, 10)产生10并将clamp(-15, 1, 10)产生1whereclamp(7, 1, 10)将产生7. 我知道您正在寻找更多的in_array方法,但对于那些从 Google 来到这里的人,这里是您可以在不创建函数(或将其变为函数)的情况下钳制 PHP 的方法。

max($min, min($max, $current))

例如:

$min = 1;
$max = 10;
$current = 55;
$clamped = max($min, min($max, $current));
// $clamped is now == 10

一个简单的钳位方法是:

function clamp($current, $min, $max) {
    return max($min, min($max, $current));
}
于 2016-02-16T17:11:21.183 回答
7
$value = in_array($value, $possible_values) ? $value : $default_value;
于 2013-07-15T21:51:03.857 回答