首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中的缩放值

PHP中的缩放值
EN

Stack Overflow用户
提问于 2010-06-29 07:03:48
回答 4查看 2.7K关注 0票数 7

我不知道如何表达这是PHP。

我希望获得的最小值和最大值分别为100和420。

让我们假设我有:

代码语言:javascript
运行
复制
1000
4534
34566
123145
12312265

现在,我该怎么说呢:

取4534,并知道1000 = 420和12312265 = 100确定4534值。

为了更清楚,我试图用正方形来表示网页排名,所以如果排名是1,它应该被转换成我的最大值/大小420,但是如果页面排名低,比如说13000,那么它的大小应该接近最小的100。我知道所有的价值观。

谢谢。

我仍然很难弄清楚这一点。

到目前为止,使用我得到的第一个答案中的代码:

代码语言:javascript
运行
复制
$srcmin=1185;
$srcmax=25791525;

$destmin=100;
$destmax=420;

$pos = (($RANK - $srcmin) / ($srcmax-$srcmin)) ;
$rescaled = ($pos * ($destmax-$destmin)) + $destmin;*/

$percentage = (($RANK - $MIN) * 100) / $MAX;
$SIZE = (($percentage / 320) * 100) + 100

作为$RANK我的价值为排名的网页和$SIZE的价值,我需要他们相应的大小。这不起作用(毫无疑问是我的错误),我从$SIZE得到的结果是100。

EN

Stack Overflow用户

发布于 2010-06-29 07:44:37

你需要做的是

(1)在取值范围内找到每个值的123145 -1位置,1000表示x=0,1000表示x=1;

(2)反转它,因为你想让最小的数具有最大的宽度(x=1-x)

(3)将该数字0..1转换为您想要的宽度范围。

代码语言:javascript
运行
复制
$values = array(1000, 4534, 34566, 123145);
$minV = min($values);
$maxV = max($values);
$minW = 100;
$maxW = 420;
foreach($values as $v)
{
    $width = $minW + ($maxW - $minW) * (1 - (($v - $minV) / ($maxV - $minV)));
    echo "<div style='width:".$width."px;background-color:red;padding:5px;'></div>";
}

或者你可以在一个函数中泛化它:

代码语言:javascript
运行
复制
function invTranslate($value)
{
    $min1 = 1000;
    $max1 = 123145;
    $min2 = 100;
    $max2 = 420;
    return $min2 + ($max2 - $min2) * (1 - (($value - $min1) / ($max1 - $min1)));
}

并像这样使用它:

代码语言:javascript
运行
复制
<div style="width:<?=invTranslate(5000)?>px"></div>
<div style="width:<?=invTranslate(100000)?>px"></div>
<div style="width:<?=invTranslate(90000)?>px"></div>
票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3136770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档