2013-02-05 25 views
3

我有两个PHP数组如下数组排序的预算范围内PHP

阵列1 - 预算开始

Array 
(
    [0] => 25000 
    [1] => 30000 
    [2] => 35000 
    [3] => 15900 
) 

阵列2 - 预算结束

Array 
(
    [0] => 40000 
    [1] => 50000 
    [2] => 60000 
    [3] => 55000 
) 

我想过滤预算范围,用户实际上正在寻找。对于上述预算范围是35000对于预算开始和40000对于预算结束。

预算开始通过各种预算开始与其他所有预算开始比较计算,使得预算开始应该是预算起始和预算结束

预算之间开始35000,因为

25000 <= 35000 < 40000 
30000 <= 35000 < 50000 
35000 <= 35000 < 60000 
15900 <= 35000 < 55000 

预算完结40000因为

25000 < 40000 <= 40000 
30000 < 40000 <= 50000 
35000 < 40000 <= 60000 
15900 < 40000 <= 55000 

有没有办法解决这个问题。

谢谢回复

+0

我不完全清楚你想要做什么。你想要每对之间最小的开始和结束值?在这种情况下,答案应该是什么? 70000 + 90000应该被忽略,还是应该没有正确的答案? – FoolishSeth

+1

是的,我应该忽略70000和90000在上述情况下 – ArrayOutOfBound

+0

那么你怎么知道它应该被忽略?你只是想让哪个答案能够同时满足这些问题?如果它们都是不相交的(40000,60000,80000),(50000,70000,90000)? – FoolishSeth

回答

1
<?php 
$start = Array(25000,30000,35000,15900); 

$end = Array(40000,50000,60000,55000); 


foreach($start as $val){ 
    $cnt = 0; 
    for($i=0;$i<count($start); $i++){ 
     if($start[$i] <= $val && $val < $end[$i]){ 
      $cnt++; 
     } 
     if($cnt == count($start)){ 
      $start_budget = $val; 
     } 
    } 
} 

foreach($end as $val){ 
    $cnt = 0; 
    for($i=0;$i<count($end); $i++){ 
     if($start[$i] < $val && $val <= $end[$i]){ 
      $cnt++; 
     } 
     if($cnt == count($end)){ 
      $end_budget = $val; 
     } 
    } 
} 

echo $start_budget; 
echo "<br>"; 
echo $end_budget; 
?> 
+0

谢谢Soo很多 – ArrayOutOfBound

+0

@ArrayOutOfBound高兴地帮助你:) –