PHP相当于数组上的Excel vlookup

时间:2014-05-11 02:20:47

标签: php lookup

在php中查找内置函数后,找不到与Excel的{​​{1}}函数类似的函数。

我需要一个接收数组和查找值的函数并返回所需的信息。例如:

vlookup

我对这种功能背后的逻辑感到困惑,所以任何帮助都会很棒 - 谢谢。

4 个答案:

答案 0 :(得分:2)

function vlookup($lookupValue,$array){

    $result;

    //test each set against the $lookupValue variable,
    //and set/reset the $result value

    foreach($array as $key => $value)
    {
        if($lookupValue > $key)
        {
        $result = $value;
        }
    }

    return $result;

}

答案 1 :(得分:2)

function testDeductionRate(){echo $this->deductionRate('ks',300);//zone and time are parameter for deductionRate() }

//deduction will be acted as vlookup (rangeLookup true)
function deductionRate($zone,$time){
$actualRate = 0;
$allRate = array(
    'tg'=>array(0=>0,20=>200,30=>300,40=>400,50=>500), 
    'ks'=>array(0=>0,20=>100,30=>200,40=>300,50=>400), 
    'pc'=>array(0=>0,20=>50,30=>100,40=>200,50=>300) 
);
if(isset($allRate[$zone])){
    $rate = $allRate[$zone];
    foreach($rate as $key=>$val){
        if($time>=$key) $actualRate = $val; 
    }
}else{
    return -1; //-1 means error
}
return $actualRate;


}

答案 2 :(得分:1)

如果要查询多维关联数组,请尝试以下操作:

 function vlookup($lookup_vakue, $lookup_array, $lookup_column, $result_column)
    {
        foreach ($lookup_array as $item) {
                if ($item[$lookup_column] == $lookup_vakue) {
                    return $item[$result_column];
                }
        }
        return false;
    }

样本数据

$data = 
[ 
   ['id'=>1,'price'=>100],
   ['id'=>2,'price'=>200],
   ['id'=>3,'price'=>300]
];

查询选项

$result = vlookup('2',$data, 'id','price');

结果:

200

答案 3 :(得分:0)

$getbase= function($amount) use ($baseCalculationPrice)
    {
        return (end(array_filter(
        $baseCalculationPrice,function ($key) use ($amount) 
            {
              return $key < $amount;
            },
        ARRAY_FILTER_USE_KEY
        )));
     };

数量150结果50 数量1500结果18 数量25000结果14