比较数量并搜索数组值

时间:2019-04-20 10:55:56

标签: php arrays search

我有一个条件逻辑,当用户输入一个数量时,如果数量为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";
}

我的英语不是很好,所以无法正确解释,请让我知道是否需要更多解释,希望大家能帮助我解决这个问题

1 个答案:

答案 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循环的必要性还表明,数据的结构不是最佳的。

编辑

该问题已被编辑为不查找完全匹配,而是范围匹配-尚不清楚,所以我假设含义是

  • 数量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";
}