根据包含的值与特定值的匹配程度对数组进行排序

时间:2015-06-26 23:00:58

标签: php arrays math

情景

我有一份打印格式列表和一张上传的图片。

图像可以很好地匹配某些格式,而其他格式则较少。

例如,如果图片的比例为4:3,则其格式为40 x 30 cm

但是,也有一些格式不完全符合图像,例如:40 x 35 cm

问题

格式需要根据图像的适合程度进行排序。

代码

$formats = array(
    '30x40',
    '35x40',
    '40x60'
);

// Ratios in the format (such as 3:4) won't serve us in calculations.
// Therefore we use the images aspect factor, which we compute
// like this:

$imageAspectFactor = $imageX / $imageY;

至少我认为我能做到这一点。

问题

从现在开始,我不知道该往哪里去。从数学上讲,如何将图像的方面因子与(当前)格式(在循环中)的结果方面因子进行匹配,以便结果值可以用作构建新的有序数组的数组键。格式?

为了更好地理解这一点,请参阅以下实用代码段:

实用代码

$formats = array(
    '30x40',
    '35x40',
    '40x60'
);

foreach($formats as $formatString){
    list($formatX, $formatY) = explode('x', $formatString);
    $formatAspectFactor = $formatX / $formatY;
    $output[/* NUMERIC THAT REPRESENTS HOW WELL FORMAT MATCHES IMAGE*/] = $formatString;
}

ksort($output);

请注意:我不需要一个完整的解决方案,除非你觉得过于激励。我所寻找的是数学理解如何计算一个数字与另一个数字的匹配程度,并以某种方式用数字表示。

0 个答案:

没有答案