2016-03-31 9 views
0

Ich muss die Anzahl der Datensätze finden, die größer als ein bestimmter Float sind und die Gruppe der Daten finden, die am häufigsten wiederholen. Zum Beispiel habe ich die Daten unten und ich brauche zu finden, wie viele Einträge Werte> 4.Identifizieren Sie sich wiederholendes Muster mit PHP

1.5 
    1.7 
    4.5 
    4.7 
    4.8 
    1.4 
    4.5 
    4.9 

In den obigen Daten, die die längste kontinuierliche Wiederholung von Werten größer als 4 ist 4.5,4.7,4.8. Daher sollte die Summe, die ich zurückgeben möchte, 3 sein. Wie Sie sehen können, bricht das Muster nach 4,8 ab, da die Zahl 1,4 oben ist. Gibt es eine Möglichkeit, dieses Muster zu identifizieren?

+0

ist, dass die Werte innerhalb eines Arrays – Sinto

+0

tat versuchst du irgendwas? – user3470953

+0

Es wird erwartet, dass Sie zumindest versucht haben, dies selbst zu lösen. Welche Lösungen hast du bisher versucht? – Styphon

Antwort

0

die Sie interessieren, ich habe hier ein Array verwendet:

$arr = array(
     0 => '1.5', 
     1 => '1.7', 
     2 => '4.5', 
     3 => '4.7', 
     4 => '4.8', 
     5 => '1.4', 
     6 => '4.5', 
     7 => '4.9' 
    ); 
     $chk_val = 4; // value which is checking 
     $cnt = 0;$inc = 0; 
     foreach ($arr as $i => $val) { 
     if ($val > $chk_val) { 
      $inc++; 
      if ($inc > $cnt) { $cnt = $inc;} 
     } else { 
      $inc = 0; 
     } 
     } 
     echo $cnt; 
0

versuchen, diese

$n = 4; // number to check 
$count = 0; 
$max = 0; 
$ele = array(1.5, 1.7, 4.5, 4.7, 4.8, 1.4, 4.5, 4.9); 
for ($i = 0; $i < count($ele); $i++) { 
    if ($ele[$i] >= $n) { // check for greater element than given number 
    $count++; // increase consecutive counter variable 
    $arr[$max] = $count; //save continues max counter to array 
    } else { 
    $count = 0; //reset consecutive counter 
    $max++; 
    }  
} 
echo max($arr); 
0

quick and dirty ...

function findNums($nums, $min = 4) { 
    $groups = array(); 
    $groupcounts = array(); 
    $groupindex = 0; 
    foreach($nums as $num) { 
    if($num > $min) { 
     $groups[$groupindex][] = $num; 
     if(array_key_exists($groupindex, $groupcounts)) { 
     $groupcounts[$groupindex]++; 
     } else { 
     $groupcounts[$groupindex] = 1; 
     } 
    } else { 
     $groupindex++; 
    } 
    } 
    return array($groupcounts, $groups); 
} 

// $your_numbers is your list 
$nums = array_map('trim', explode("\n", $your_numbers)); 
$result = findNums($nums); 
$counts = $result[0]; 
$maxcount = max($counts); 
$groups = $result[1]; 
echo "max count is ".$maxcount." with values:\n"; 
$key = array_search($maxcount, $counts); 
var_dump($groups[$key]); 
Verwandte Themen