对任何“进行启发式排序”;“种类”;PHP中的技术度量

对任何“进行启发式排序”;“种类”;PHP中的技术度量,php,measurement,Php,Measurement,我列出了不同的列表,它们的测量值相同,但单位有点混合,比如 “1米,200毫米,1英尺” 或者也可能 “1°C,273 K”等 现在我想按绝对顺序对它们进行排序 “200毫米,1英尺,1米”和“273 K,1摄氏度” 我想知道这是否是一个已经解决的问题,因为我不想重新发明轮子。我担心,这可能是某种“购买PHP扩展”的问题,但我已经找到了一些有用的软件包: 可以在测量单位之间进行各种对话 我已经创建了代码来分隔单元和编号 所以我想的是,将部队“暴力”到某个维度: 接下来,我可以选择第一个维度,将

我列出了不同的列表,它们的测量值相同,但单位有点混合,比如

“1米,200毫米,1英尺”

或者也可能

“1°C,273 K”等

现在我想按绝对顺序对它们进行排序

“200毫米,1英尺,1米”和“273 K,1摄氏度”

我想知道这是否是一个已经解决的问题,因为我不想重新发明轮子。我担心,这可能是某种“购买PHP扩展”的问题,但我已经找到了一些有用的软件包:

可以在测量单位之间进行各种对话

我已经创建了代码来分隔单元和编号

所以我想的是,将部队“暴力”到某个维度:

接下来,我可以选择第一个维度,将所有内容转换为第一个“主”SI单位并对其进行排序


对吗?

通常,您需要将这些单位转换为一些常用度量单位,但仅用于排序

使用和自定义回调函数。在回调中,进行转换以进行比较


但是,返回结果时一定要保留原始单位,否则舍入误差会逐渐增加。

通常,您需要做的是将这些单位转换为一些常用度量单位,但仅用于排序

使用和自定义回调函数。在回调中,进行转换以进行比较


不过,返回结果时一定要保留原始单位,否则舍入错误会慢慢出现。

这就是我根据建议提出的解决方案

public function testCompareLength()
{
    $this->assertLessThan(0, $this->objectDe->compareFunction('100 mm', '1 m'));
}

public function testCompareTemperature()
{
    $this->assertLessThan(0, $this->objectDe->compareFunction('1 K', '0 °C'));
    $this->assertGreaterThan(0, $this->objectDe->compareFunction('0 °C', '1 K'));
    $this->assertEquals(0, $this->objectDe->compareFunction('-273 °C', '0 K'));
}

/**
*@param$numberString
*
*@return数组
*/
公共函数parseNumber($numberString):数组
{

$values=preg_split('/(?这是我根据建议提出的解决方案

public function testCompareLength()
{
    $this->assertLessThan(0, $this->objectDe->compareFunction('100 mm', '1 m'));
}

public function testCompareTemperature()
{
    $this->assertLessThan(0, $this->objectDe->compareFunction('1 K', '0 °C'));
    $this->assertGreaterThan(0, $this->objectDe->compareFunction('0 °C', '1 K'));
    $this->assertEquals(0, $this->objectDe->compareFunction('-273 °C', '0 K'));
}

/**
*@param$numberString
*
*@return数组
*/
公共函数parseNumber($numberString):数组
{

$values=预分割('/(?请在向下投票时发表评论,谢谢你是说你只想按数字排序,忽略单位吗?如果你已经将单位和数字分开,那么你可以有一个单位和PHPUnits度量类的映射,在那里找到第一个,这样你就知道每个单位和数字对实例化什么类,然后比较它们。@khartnett no、 考虑到单位,如您所说,根据常用度量对其进行排序,并在排序后将其恢复到以前的状态。请在向下投票时发表评论,谢谢您是否说您只想按数字排序,而忽略单位?如果您已将单位和数字分开,则您可以拥有单位和计量单位的地图类,在那里找到第一个类,这样你就知道为每个单位和数字对实例化什么类,然后比较它们。@khartnett否,按照你所说的考虑单位,根据常见的度量对它们进行排序,并在排序后将它们恢复到以前的状态。