比较数量并搜索数组值

问题描述 投票:0回答:1

我有一个条件逻辑,当用户输入数量时,所有数量的预定义定价,如果数量是200,价格将是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";
}

我的英语不太好,所以无法正确解释请告诉我是否需要更多解释我希望你们能帮我解决这个问题

php arrays search
1个回答
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循环的必要性也表明,数据结构不是最优的。

编辑

问题已被编辑为不寻找完全匹配,但是范围匹配 - 它仍然不清楚,所以我假设其含义是

  • 数量1-10:价格9.99
  • 数量11-25:价格8
  • 数量26-50:价格6
  • 数量51-100:价格4

这会给

$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";
}