首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找到最近的值

找到最近的值
EN

Stack Overflow用户
提问于 2016-07-05 07:26:52
回答 2查看 84关注 0票数 0

我在我的项目中面临一个问题。我有一个产品名称的列表

最佳营养100乳清蛋白-黄金标准巧克力薄荷2.07磅 最佳营养100乳清蛋白-金标(天然)香草1.9磅 最佳营养100乳清蛋白-黄金标准巧克力薄荷2.07磅 ‘最佳营养100乳清蛋白-黄金标准巧克力花生黄油3.31磅’ ‘最佳营养100乳清蛋白-黄金标准的关键石灰派1.81磅’ ‘最佳营养100乳清蛋白-金盐焦糖1.81磅’ 最佳营养100乳清蛋白-金标准香草冰淇淋2.07磅

所有这些产品都保存在产品表中。

然后我又有了另一张存储大小类别的表。

"1磅,3.3磅,8磅,1.8磅,3磅,10磅,5磅,2磅,2.91磅,2.47磅,2.5磅“

我正在对产品进行分类,以便如果在产品名称中找到大小,那么产品将被分配到该大小类别中。

例如

最佳营养100乳清蛋白-金标准双富巧克力1磅

在这个产品中,我们有大小1磅和1磅也存在于我们的大小类别表中,那么产品将被分配到1磅类别。

为此,我使用以下正则表达式:

代码语言:javascript
运行
复制
preg_match("/[\s]+\b$size\b/", $product_name) OR
preg_match("/[\-]+\b$size\b/", $product_name) OR   
preg_match("/\b$size\b/", $product_name) 

其中,$size是我从size分类表获得的大小,而$product_name是产品的名称,它目前对我来说很好。

现在,如果产品中有一个特定的大小,但在size分类表中不存在,那么该产品应该分配给最接近的大小类别。

例如

最佳营养100乳清蛋白-黄金标准巧克力薄荷2.07磅

2.07磅在我的尺寸类别表中不存在,那么这个产品应该分配给2磅或2.47磅的类别。

EN

回答 2

Stack Overflow用户

发布于 2016-07-05 09:52:54

如果数据库包含2.00和2.10,那么

最佳营养100乳清蛋白-黄金标准巧克力薄荷2.07磅

步骤1: Regex:查找2.07

您需要一个与2.07 lbs匹配的正则表达式,例如

代码语言:javascript
运行
复制
$haystack = 'Optimum Nutrition 100 Whey Protein - Gold Standard Chocolate Mint 2.07 lbs';
preg_match('/(07)\slbs/', $haystack, $matches); // you still have to do some howework here
print_r($matches);

我让您以一种通用和健壮的方式匹配2.07。您可以在http://regex101.comhttp://www.phpliveregex.com/上测试正则表达式。

步骤2: SQL:

  • 发现第一个值低于2.07和
  • 在数据库中找到高于2.07的第一个值。 例如: 2.00和2.10。

步骤3: PHP:确定哪个值最近。

例如2.10

票数 0
EN

Stack Overflow用户

发布于 2016-07-05 08:00:35

代码语言:javascript
运行
复制
$search_product='2.07 Lbs';
$available_products=array('2 Lbs','2.91 Lbs','2.47 Lbs','2.5 Lbs');

for($i=0;$i<count($available_products);$i++){   
    if(!isset($closet_value)){
        $closet_diff=abs($search_product-$available_products[$i]);
        $closet_value=$available_products[$i];
    }else if($closet_diff>abs($search_product-$available_products[$i])){
        $closet_diff=abs($search_product-$available_products[$i]);
        $closet_value=$available_products[$i];
    }

}
echo $closet_value;

2磅

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38197586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档