我的用户发布了一个类别数组,然后我需要根据用户选择的类别数组从表中选择费率。到目前为止,我已经能够让它正常工作。
示例:
阵列类别:汽车配件,自行车,饼干,吊扇,搅拌机,艺术品
返回阵列速率:60、35、25、20、15、5
然后我根据在速率数组中选择的速率进行计算。如果数组中没有重复的值,我下面的代码可以很好地工作。
我遇到的问题是,如果用户输入一个类别两次,返回的数组只返回输入类别的一个实例的速率
示例:
阵列类别:汽车配件,自行车,饼干,吊扇,自行车,搅拌机,饼干,艺术品
返回阵列速率:60、35、25、20、15、5
应该是什么->阵列速率:60,35,25,20,35,15,25,5
返回的数组正在删除重复的速率值,但我需要根据返回数组的每一行中的速率进行计算。
我现在不知道如何使返回的值留在返回的数组中。任何帮助都会很好,或者任何关于我可以做这件事的其他方法的建议。
$qty=mysql_real_escape_string($_POST['qty'];
$pcategories=mysql_real_escape_string($_POST['pcategories'];
<?php foreach($qty as $a => $b){ ?>
<?php // Get the duty rate based on the product categorie user selected
$connection = mysqli_connect("localhost","root","","customs") or `enter
code here`die("Error " . mysqli_error($connection));
$sql = "
SELECT `categories`, `rate`
FROM `lt_products`
WHERE `categories` IN ('".implode("','",$pcategories)."')
ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";
$result = mysqli_query($connection, $sql)or die(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
$row_rate[] = $row["rate"];
}
$rate_row[] = $row_rate[$a];
?>
您的SQL语句不依赖于$a
和$b
,为什么不将其从foreach循环中取出呢?不需要每次在循环中都向数据库请求相同的数据。
然后你可以替换这个代码
while($row = mysqli_fetch_assoc($result)) {
$row_rate[] = $row["rate"];
}
使用此代码
while($row = mysqli_fetch_assoc($result)) {
$row_rate[$row["categories"]] = $row["rate"];
}
然后添加此代码
$result_rate = []; //or array() - depends on your PHP version
foreach ($pcategories as $pcat) {
$result_rate[] = $row_rate[$pcat];
}
现在您有一个对应于输入类别数组的$result_rate
数组,因此您可以替换此代码
$rate_row[] = $row_rate[$a];
使用此代码
$row_rate[] = $result_rate[$a];
这是完整的建议代码:
$qty=mysql_real_escape_string($_POST['qty'];
$pcategories=mysql_real_escape_string($_POST['pcategories'];
<?php // Get the duty rate based on the product categorie user selected
$connection = mysqli_connect("localhost","root","","customs") or `enter code here`die("Error " . mysqli_error($connection));
$sql = " SELECT `categories`, `rate`
FROM `lt_products`
WHERE `categories` IN ('".implode("','",$pcategories)."')
ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";
$result = mysqli_query($connection, $sql)or die(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
$row_rate[$row["categories"]] = $row["rate"];
}
$result_rate = []; //or array() - depends on your PHP version
foreach ($pcategories as $pcat) {
$result_rate[] = $row_rate[$pcat];
}
$rate_row = []; //or array() - depends on your PHP version
<?php foreach($qty as $a => $b){
$rate_row[] = $result_rate[$a];
?>