コード例 #1
0
ファイル: NumericClass.php プロジェクト: KIZI/sewebar-cms
 /**
  *  Funkce pro porovnání 2 numerických veličin vyjádřených výčtem prvků
  */
 public static function numericEnumsCoverage($enumArr1, $enumArr2, $coverageMode, $minusInf = -999999999, $plusInf = 999999999)
 {
     if (count($enumArr1) > 0 && count($enumArr2) > 0) {
         //shody hodnot
         $match1 = 0;
         foreach ($enumArr1 as $value1) {
             if (!array_search($value1, $enumArr2) === false) {
                 $match1++;
             }
         }
         $match1 = $match1 / max(count($enumArr1), count($enumArr2));
         //velikost mnozin
         //zjistime min a max u jednotlivych mnozin
         $min1 = 999999999;
         $max1 = -999999999;
         foreach ($enumArr1 as $value1) {
             if ($value1 < $min1) {
                 $min1 = $value1;
             }
             if ($value1 > $max1) {
                 $max1 = $value1;
             }
         }
         $min2 = 999999999;
         $max2 = -999999999;
         foreach ($enumArr2 as $value2) {
             if ($value2 < $min2) {
                 $min2 = $value2;
             }
             if ($value2 > $max2) {
                 $max2 = $value2;
             }
         }
         //porovname je jako intervaly
         $interval1 = new Interval($min1, $max1, true, true, $minusInf, $plusInf);
         $match2 = $interval1->containtsInterval(new Interval($min2, $max2, true, true, $minusInf, $plusInf));
         return (2 * $match2 + $match1) / 3;
     } else {
         return 0;
     }
 }