繁体   English   中英

遍历结果PHP或Jquery

[英]Loop Through results PHP or Jquery

我已经为此工作了将近三天,但效果不佳。 我试图在Laravel中完成此操作。 但我正在寻找任何类型的好主意。

我有一个建议零售价的产品。 自产品发布以来,每一小时的每一天价格都下降10%。 但我想显示每天价格的下降,如您在张贴的图片中所见。

这是我一直在尝试的一些方法。 他们似乎都不干净。

  1. 在数据库中增加1行,并将其称为价格。 -编写一个CRON,它将每小时在服务器上运行一次,以查看所有产品并在该表中设置新价格。 但这意味着我将使用服务器上的大量资源。

  2. 在数据库中添加10条额外的行,并在添加产品时生成价格。 但是我在尝试弄清楚如何显示星期几并用红色突出显示时遇到问题。 我猜我可以通过jQuery做到这一点。 不太了解,但这是一种方法吗?

  3. 从该数据库中提取产品,然后循环浏览每个数据库,并使用此代码生成表格和价格。 但是,如果流量巨大,那将会消耗很多服务器。

还有其他想法吗? 任何可以帮助我简化这一点的东西。

这是我为3ed选项提供的代码。 由于我不知道jQuery,我没有第二个。

$msrp = 29.59;
$dayposted = "2016-1-26";
$cDate = Carbon::parse($dayposted);
$today = $cDate->diffInDays();
$days = [];
$i = 1;
$percent = 0;
for($n=0 ;$n<10; $n++) {
    setlocale(LC_MONETARY, 'en_US.UTF-8');
    if ($i == $today) {
        $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp *      ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', 'today');
        $price = number_format( $msrp * ((100-($i*10))/100),2, '.', '');
    }
    elseif($i == 10) {
        $day = array_add(['day' => 'Final'], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', '');
    }
    else{
        $day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
        $day = array_add($day, 'class', '');
    }
    array_push ($days, $day);
    $i++;
}

这也是我要完成的工作。

点击这里查看图片

答案取决于您希望何时完成工作(计算)。

我同意,如果不需要,每次用户请求信息时都要进行计算,这显然是对资源的浪费。 但是 ,只要您不进行大量的迭代,查询或对数据库中所有事物进行最坏的计数,数学计算就不会非常密集。

话虽如此,如果您真的想确保这些计算不会使您的服务器停顿下来,那么我建议的解决方案是在客户端上进行。

您将原始数据返回给客户端,并在浏览器上计算价格,这样,计算就可以在服务器之外完成,并且仅在需要时进行。 但是,这可能不是一个选择,因为您可能不想向客户公开定价方法。 不过,一个简单的javascript函数只是最简单的方法,该函数仅根据now和发布日期之间的差来计算减少百分比。

无论如何,这可能是微优化的情况。 如果您担心的话,请做一些基准测试,看看服务器在负载下如何处理它。 这是唯一确定是否需要优化的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM