【问题标题】:PHP Array, access array value by a range of indexesPHP Array,通过一系列索引访问数组值
【发布时间】:2013-11-28 05:57:30
【问题描述】:

我的情况是我的物品价格在公斤范围内,例如

price in range 0.01-0.04 is 5
price in range 0.05-0.09 is 30
price in range 0.1-0.15 is 50  

这是我想要的数组示例

$prices = array("0.01-0.04"=>5,"0.05-0.09"=>30);

现在我想创建一个数组,所以当用户输入 0.02 it should return price in range 0.01-0.04 时,它是 5,同样如果用户 input 0.07 so it should return 30

如何在 PHP 中创建一个数组以通过一系列索引访问数组?

【问题讨论】:

  • 你必须使用 if 语句
  • 我知道,但它们的条件很多,我希望通过索引来加快搜索速度...
  • 这是一个范围条件,不知道能不能用数组来实现
  • 如何将数字向下取整但加上百分比?

标签: php arrays indexing range arrayaccess


【解决方案1】:

试试这个代码

 <?php
        $price = array(
            array(
                'min_range' => 0.1,
                'max_range' => 0.4,
                'price'     => 5
            ),
            array(
                'min_range' => 0.5,
                'max_range' => 0.9,
                'price'     => 30
            ),
            array(
                'min_range' => 1.0,
                'max_range' => 1.5,
                'price'     => 50
            ),
        );

        $input = 0.7;

        foreach( $price as $p){
            if($input>=$p['min_range'] && $input<=$p['max_range']){
                echo $p['price'];
                break;
            }
        }

    ?>

【讨论】:

  • 这很好,但是会花很多时间,那就不用数组了。
【解决方案2】:

将 $no 变量设置为要查找范围的数字

    <?php

$no = 0.05;
$ranges = array
  (
  array(0.01,0.04,5),
  array(0.05,0.09,30),
  array(0.1,0.15,50)
  );
  $foundFlag=false;
 foreach ($ranges as $range) { 

        if($no>=$range[0] && $no<=$range[1])
        {
        $foundFlag=true;
            echo "$range[2]";
        }
} 
  if($foundFlag==false)
  {
    echo "range not found";
  }

?>

【讨论】:

    【解决方案3】:

    你也可以这样试试,

      <?php
    
         $input = $_POST['userInput'];
         $count = 0;
    
         $arr =Array();
         $arr[0]=0.01;
         $arr[1]=0.04;
         $arr[2]=0.05;
         $arr[3]=0.09;
         $arr[4]=0.1;
         $arr[5]=0.15;
    
         $price =Array();
         $price[0] =5;
         $price[2] =30;
         $price[4] =50;
    
         while(count($arr)>$count)
            if($arr[$count] != null && $arr[$count+1] != null)
            {
                 if($input >$arr[$count] && $input <$arr[$count+1])
                 {
                    echo "price is $price[$count]";
                 }
            }
            $count = $count +2;
         }
     ?>
    

    【讨论】:

      【解决方案4】:

      我发现了一些看起来可以用于你的情况的东西

      Php - Calculating number based on percentage, how to drop all precision after 2 dec places?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-25
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多