我不知道如何表达这是PHP。
我希望获得的最小值和最大值分别为100和420。
让我们假设我有:
1000
4534
34566
123145
12312265现在,我该怎么说呢:
取4534,并知道1000 = 420和12312265 = 100确定4534值。
为了更清楚,我试图用正方形来表示网页排名,所以如果排名是1,它应该被转换成我的最大值/大小420,但是如果页面排名低,比如说13000,那么它的大小应该接近最小的100。我知道所有的价值观。
谢谢。
我仍然很难弄清楚这一点。
到目前为止,使用我得到的第一个答案中的代码:
$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。
发布于 2010-06-29 07:44:37
你需要做的是
(1)在取值范围内找到每个值的123145 -1位置,1000表示x=0,1000表示x=1;
(2)反转它,因为你想让最小的数具有最大的宽度(x=1-x)
(3)将该数字0..1转换为您想要的宽度范围。
$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>";
}或者你可以在一个函数中泛化它:
function invTranslate($value)
{
$min1 = 1000;
$max1 = 123145;
$min2 = 100;
$max2 = 420;
return $min2 + ($max2 - $min2) * (1 - (($value - $min1) / ($max1 - $min1)));
}并像这样使用它:
<div style="width:<?=invTranslate(5000)?>px"></div>
<div style="width:<?=invTranslate(100000)?>px"></div>
<div style="width:<?=invTranslate(90000)?>px"></div>https://stackoverflow.com/questions/3136770
复制相似问题