【问题标题】:Array sorting for Budget range in PHPPHP中预算范围的数组排序
【发布时间】:2013-01-19 22:58:25
【问题描述】:

我有如下两个 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

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

感谢回复

【问题讨论】:

  • 我不完全清楚你想要做什么。您想要每对之间的最小开始值和结束值吗?在这种情况下,应该的答案是什么? 70000+90000应该忽略,还是没有正确答案?
  • 是的,在上述情况下我应该忽略 70000 和 90000
  • 那么你怎么知道它应该被忽略呢?您是否只想同时满足其中大部分的答案?如果它们都像 (40000,60000,80000), (50000,70000,90000) 这样不相交怎么办?
  • 好吧,忘记 70000 和 90000
  • 为什么不将您的数据设置为单个数组?即$Budget=array(array(25000,40000),array(30000,50000))

标签: php arrays logic


【解决方案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;
?>

【讨论】:

  • @ArrayOutOfBound 很乐意为您提供帮助 :)
猜你喜欢
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多