php 多个数字比较差值的问题。
$a = "156";
$b = "126";
$c = "151";
$d = "154";
$e = "123";
/*以上的值都互相比较一下,差值大于20的都显示出来 【结果:$a > $b 30  这样的输出】*/
以上需求最简单的办法是??

解决方案 »

  1.   

    $a = "156";
    $b = "126";
    $c = "151";
    $d = "154";
    $e = "123";
    /*以上的值都互相比较一下,差值大于20的都显示出来 【结果:$a > $b 30  这样的输出】*/$t = array($a,$b,$c,$d,$e);
    for($i=0; $i<count($t);$i++)
      for($j=0;$j<count($t); $j++)
        if(abs($t[$i]-$t[$j]) > 20) printf("%d vs %d %d\n", $t[$i], $t[$j], $t[$i]-$t[$j]);
    156 vs 126 30
    156 vs 123 33
    126 vs 156 -30
    126 vs 151 -25
    126 vs 154 -28
    151 vs 126 25
    151 vs 123 28
    154 vs 126 28
    154 vs 123 31
    123 vs 156 -33
    123 vs 151 -28
    123 vs 154 -31
      

  2.   


    $a = "156";
    $b = "126";
    $c = "151";
    $d = "154";
    $e = "123";$arr = array();
    $arr['$a']=$a;
    $arr['$b']=$b;
    $arr['$c']=$c;
    $arr['$d']=$d;
    $arr['$e']=$e;
    foreach ($arr as $k => $value) {
        foreach ($arr as $k2 => $value2) {
            if ($value - $value2 > 20) {
                echo $k . ' > ' . $k2 . ' ' . ($value - $value2) . '<br/>';
            }
        }
    }//$a > $b 30
    //$a > $e 33
    //$c > $b 25
    //$c > $e 28
    //$d > $b 28
    //$d > $e 31
      

  3.   

    $a = "156";
    $b = "126";
    $c = "151";
    $d = "154";
    $e = "123";
     
    $arr1 = $arr2 = array(
    '$a'=>$a,
    '$b'=>$b,
    '$c'=>$c,
    '$d'=>$d,
    '$e'=>$e
     );
     
    foreach ($arr1 as $k1 => $value1) {
        foreach ($arr2 as $k2 => $value2) {
            if($k1 == $k2) continue;
            if ($value1 - $value2 > 20) {
                echo $k1 . ' > ' . $k2 . ' ' . ($value1 - $value2) . '<br/>';
            }
            if ($value1 - $value2 < -20) {
                echo $k2 . ' > ' . $k1 . ' ' . ($value2 - $value1) . '<br/>';
            }
            unset($arr2[$k1]);
        }
    }
    这样效率能高点