我有一个条件逻辑,当用户输入一个数量时,如果数量为200,则所有数量都有预定义的价格;如果数量为400,则价格为4;如果数量为400,价格为4.8,因此,如果用户输入150作为数量,它将检查哪个值匹配,那么它将获得与可用数量相匹配的价格,例如用户输入150数量,因此它处于200状态,因此将给出为200数量定义的价格
后端可用的示例条件
[wholesalePrices] => Array
(
[0] => Array
(
[quantity] => 10
[price] => 9.99
)
[1] => Array
(
[quantity] => 25
[price] => 8
)
[2] => Array
(
[quantity] => 50
[price] => 6
)
[3] => Array
(
[quantity] => 100
[price] => 4
)
我尝试使用此功能,但这对我不起作用
<form>
<input type="text" name="quantity" placeholder="Quantity" />
<input type="text" name="price" placeholder="Costing" readonly />
<input type="submit" name="submit" value="Show Cost" />
</form>
$data['wholesalePrices'] =
array(
array('quantity' => 10, 'price' => 9.99),
array('quantity' => 25, 'price' => 8),
array('quantity' => 50, 'price' => 6),
array('quantity' => 100, 'price' => 4)
);
$qty = $_POST['quantity'];
if(in_array($qty , $data['wholesalePrices'])) {
echo "price exist";
} else {
echo "Not Matched";
}
我的英语不是很好,所以无法正确解释,请让我知道是否需要更多解释,希望大家能帮助我解决这个问题
答案 0 :(得分:0)
您可能想尝试:
$qty = $_POST['quantity'];
$matched=false;
foreach ($data['wholesalePrices'] as $row)
if($row['quantity']==$qty) {
$matched=true;
break;
}
if($matched) {
echo "price exist";
} else {
echo "Not Matched";
}
foreach
循环的必要性还表明,数据的结构不是最佳的。
编辑
该问题已被编辑为不查找完全匹配,而是范围匹配-尚不清楚,所以我假设含义是
这会给
$qty = $_POST['quantity'];
//Input sanitization missing: Must be integer >=1
$price=0;
foreach ($data['wholesalePrices'] as $row)
if($row['quantity']>=$qty) {
$price=$row['price'];
break;
}
if($price>0) {
echo "price exist";
} else {
echo "Not Matched";
}