我必须对移动设备的各种功能进行比较(约30个功能)。但比较是基于“800 mAH,锂离子电池”这样的值。
假设移动电话'A'的电池尺寸为'800 mAH,锂离子电池'
和第二个移动'B'的电池尺寸为“锂离子电池,400 mAH”
然后A比B好。
那么如何比较800 mAH和400 mAH忽略其余的'锂离子电池',
几乎在所有30个功能中,我必须进行这种比较。就像我必须在4Mb和1GB上进行比较。
目前我正在尝试使用list($ a,$ b)= explode()类型函数。 有没有更好的解决方案。
答案 0 :(得分:5)
这取决于字符串。鉴于您作为有限样本提供的两个,您可以忽略非数字字符(也留下句点),然后比较数字。像这样:
$number_a = preg_replace( '/[^0-9.]/', '', $string_a;
$number_b = preg_replace( '/[^0-9.]/', '', $string_b;
然后将它们作为数字进行比较:
if ( $number_a > $number_b ) {
...
}
只要你总是比较相同的单位,例如你的示例节目,这就有效。但是,如果单位不同,例如,#400; 800 mAH,锂离子电池" vs."锂离子电池,.4 AH"然后它不会。您必须添加一些逻辑来解析和解释单位。
答案 1 :(得分:3)
如何从字符串中提取数字并进行比较
$A = filter_var('800 mAH, Li-ion Battery', FILTER_SANITIZE_NUMBER_INT);
$B = filter_var('Li-ion Battery, 400 mAH', FILTER_SANITIZE_NUMBER_INT);
if($A > $B){
// A is better
}