2013-11-28 44 views
0

我的情況下是我有一個項目的價格的範圍千克的訪問數組值,像PHP陣列,由一系列索引

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中通過一系列索引訪問數組?

+0

你必須去if語句 – tinybyte

+0

我知道,但他們很多條件的,我通過索引希望它更快的搜索... –

+0

這是一個範圍條件,我不知道你是否可以用數組實現這個 – tinybyte

回答

2

試試這個代碼

<?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; 
      } 
     } 

    ?> 
+0

這很好,但是會花費很多時間,所以沒有使用數組。 –

0

,您可以嘗試以這種方式爲好,

<?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; 
    } 
?> 
1

集$無變量數要爲其查找範圍

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

?> 
+0

除了關聯數組之外,代碼和我的一樣... –