【发布时间】:2021-10-18 09:29:05
【问题描述】:
我正在寻找一种基于值对数组进行排序的解决方案。首先是最小值,然后是更高的值。
数值如下(“有些数值需要英寸唱):
array( '1/3', '1/4', '1', '4"', '18 11/12"', '18 1/4"', '2-3/8', '3-3/9' )
我为此创建的代码是
$array=array( '1/3', '1/4', '1','4"', '18 11/12"', '18 1/4"', '2-3/8', '3-3/9');
foreach( $array as $k=>$v )
{
$copy[$k] = preg_match("/(\d+)\/(\d+)/",$v,$m)?$m[1]/$m[2]+(int)$v:(int)$v;
}
array_multisort( $copy, SORT_NUMERIC, $array );
print_r( $array );
预期结果
array( '1/4', '1/3', '1', '2-3/8', '3-3/9', '4"', '18 1/4"', '18 11/12"' );
【问题讨论】:
-
首先,您需要一个解析器来计算像 18 1/4 " 这样的表达式。从您的示例中不清楚该解析器必须做什么。
-
那么,
18 11/12是混合分数吗?