创建一个函数的任何想法,它将以起始价格和最终价格返回数组中的5个范围。该功能需要为类别或品牌或使用的任何过滤器创建这些范围。许多电子商务网站已经在使用价格范围过滤器。现在我能够创建这样的功能。但在这里我必须添加步骤范围。有没有办法可以根据该类别的整体价格范围自动执行这些步骤。
function price_range($category_id=0, $step=199)
{
$output = '';
$return = array();
$query = "SELECT * FROM products WHERE category = ".$category_id;
$query .= " ORDER BY PRICE";
$result = mysql_query($query);
if (!$result)
{
return FALSE;
}
else
{
if((mysql_num_rows($result) == 0))
{
return FALSE;
}
else
{
while ($row = mysql_fetch_array($result))
{
$prices = array($row['price']);
}
$ranges = array();
foreach($prices as $p)
{
$index = floor($p / $step);
if(isset($ranges[$index]))
$ranges[$index]++;
else
$ranges[$index] = 1;
}
for($i = 0; $i <= max(array_keys($ranges)); $i++)
{
//$output = "(<a href=\"?start=" . ($step * $i) . "&end=" . ($step * ($i + 1)) . "\">" . ($step * ($i + 1)) . " - " . ($step * $i) . "(" . $ranges[$i] . ")<br>";
$return[$i]['start'] = ($step * $i);
$return[$i]['end'] = ($step * ($i + 1));
$return[$i]['product_count'] = $ranges[$i];
}
}
}
return $return;
}
答案 0 :(得分:0)
像
这样的东西SELECT
(MAX(PRICE) - MIN(PRICE)) / COUNT(product) AS step
FROM
products
WHERE
category = ?
GROUP BY
category
答案 1 :(得分:0)
尝试使用范围功能。
$steps = 5;
$delta = floor((max($prices) - min($prices)) / $steps);
$price_steps = range(min($prices), max($prices), $delta);
$ price_steps变为:
array(6) {
[0]=>
float(0)
[1]=>
float(20)
[2]=>
float(40)
[3]=>
float(60)
[4]=>
float(80)
[5]=>
float(100)
}