Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Dovrei ottimizzare questo cod e mostrare a video solo...

    $filename = "file.txt";
    $handle = fopen($filename, "r");
    $contents = fread($handle, filesize($filename));
    fclose($handle);
    $splitted = split("\n", $contents);
    $valore = 45;
    $str = "";
    for($i = 0; $i < $valore ; $i++)
    {
    $str .= $splitted[$i];
    }
    $contents=$str;
    preg_match_all("#\d+#",trim($contents),$out,PREG_P ATTERN_ORDER);
    //sort($out[0]);
    echo '<pre>';
    $freq = array_count_values($out[0]);
    foreach ($freq as $k => $v) {
    if ($v > 5){
    echo "<font color=red>$k</red>- ";

    }
    if ($v > 4){
    echo "<font color=blue>$k</blue>- ";

    }
    if ($v > 3){
    echo "<font color=green>$k</green>- ";

    }
    if ($v > 2){
    echo "<font color=yellow>$k</yellow>-";

    }
    if ($v > 1){
    echo "<font color=lime>$k</lime>-";

    }
    else
    {
    echo "<font color=black>$k</black>
    ";


    }
    }

    L'ultimo colore individuato per ogni numero e non tutti quelli di passaggio...
    Cerco di spiegarmi meglio...
    se il numero 26 ad esempio è presente cinque volte con questo script io lo vedo colorato
    di tutti e cinque i colori previsti mentre io lo vorrei colorato in ogni occorrenza solo dell'ultimo colore identificativo la sua quantità ovvero vorrei tutte le sue occorrenze colorate in rosso (in questo caso)

    qualcuno riesce ad ottimizzarmi lo script in tal senso?

    Grazie


  2. #2
    Non sono sicuro di aver capito bene, ma probabilmente basta che cambi tutti gli if (a parte il primo) in elseif

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    grazie

    funzia


  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    sempre riguardo questo script dovrei...

    fare righe di 5 elementi e basta...
    e dopo ogni riga di 5 elementi tornare a capo...

    non riesco e a riposizionare correttamente il for...
    qualcuno mi indicherebbe come fare?

    Grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Ciao
    non e' testato l'ho scritto direttamente qui però l'idea e' valida
    Ti ho anche sostituito gli else if con lo switch che e' molto meglio e piu chiaro se ho capito bene il tuo codice dovrebbe fare la stessa cosa


    Generavi un html sbagliato comunque non chiudevi i font

    Andrea

    Codice PHP:
    $filename "file.txt";
    $handle fopen($filename"r");
    $contents fread($handlefilesize($filename));
    fclose($handle);

    $splitted split("\n"$contents);
    $valore 45;
    $str "";
    for(
    $i 0$i $valore $i++) {
       
    $str .= $splitted[$i];
    }
    $contents=$str;
    preg_match_all("#\d+#",trim($contents),$out,PREG_PATTERN_ORDER);
    //sort($out[0]);
    echo '<pre>';
    $freq array_count_values($out[0]);

    $counter 0;

    foreach (
    $freq as $k => $v) {
      switch (
    $v) {
        case 
    2:
          echo 
    "<font color=lime>$k</font>";
          break;
        case 
    3:
          echo 
    "<font color=yellow>$k</font>";
          break;
        case 
    4:
          echo 
    "<font color=green>$k</font>";
          break;
        case 
    5:
          echo 
    "<font color=blue>$k</font>";
          break;
        default:
          if (
    $v <= 1) {   
             echo 
    "<font color=black>$k</font>";
          } else {
             echo 
    "<font color=red>$k</font>";
          }
          break;
      }
      
    $counter ++;
      if ((
    $counter 5) == 0) {
         echo 
    "
    \n"
    ;
      } else {
         echo 
    '- ';
      }


  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    perfetto

    thanksss


  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Un piccolo ritocchino per una variante...

    Questo cod mi elimina le presenza multiple mentre adesso a me servirebbe che le multiple presenze restino evidenziate (del coloro giusto) ma visibili tutte...
    cerco di spiegarmi meglio...

    ho da analizzare 11 righe di 15 elementi ciascuna quindi alla fine avrò in tutto: 11x15=165 elementi

    ecco se faccio girare il cod alla fine me ne rimangono solo 78

    22 - 25 - 76 - 81 - 42 - 28 - 49 - 63 - 31 - 46 - 27 - 23 - 24 - 13 - 16
    19 - 72 - 21 - 8 - 26 - 86 - 40 - 29 - 20 - 51 - 52 - 35 - 37 - 47 - 18
    83 - 85 - 80 - 68 - 36 - 69 - 56 - 38 - 44 - 60 - 89 - 79 - 30 - 71 - 17
    65 - 75 - 66 - 54 - 87 - 62 - 53 - 14 - 55 - 5 - 33 - 64 - 57 - 74 - 88
    48 - 50 - 15 - 4 - 82 - 59 - 70 - 32 - 10 - 12 - 73 - 61 - 11 - 90 - 58
    9 - 78 - 34 -

    giustamente... perchè sono stati appunto eliminati i tot elementi multipli (presenti da 2 a 5 volte trovati)

    adesso vorrei che dopo l'elaborazione l'output rimanga invece un qualcosa del genere

    22,25,76,81,42,28,49,63,31,46,27,23,24,13,16;
    19,72,21,8,22,16,26,86,40,29,20,49,51,52,35;
    37,47,18,52,83,85,80,68,27,36,69,56,38,40,44;
    16,13,31,60,76,89,28,63,79,26,72,30,71,38,36;
    27,17,40,65,75,76,66,22,49,26,54,80,69,31,25;
    87,62,53,30,85,35,14,29,55,60,5,33,64,57,74;
    88,46,69,38,51,79,80,42,48,50,15,4,26,64,60;
    44,50,82,85,5,29,30,27,24,76,59,81,17,19,31;
    59,24,52,42,40,70,32,30,10,12,56,76,49,20,19;
    15,73,61,72,87,11,20,14,85,49,13,4,89,90,5;
    37,58,18,9,78,82,34,56,83,73,31,72,79,42,23;

    con tutti gli elementi in posizione originale e colorati con lo stesso colore relativo alla loro quantità rilevata nell'insieme... (es. se il 22 è presente 3 volte e il colore rosso è quello che indica la triplice presenza nell'insieme di 165 elementi vorrei che il 22 fosse evidenziato per
    ogni sua occorrenza visibile in rosso appunto)

    così:

    22,25,76,81,42,28,49,63,31,46,27,23,24,13,16;
    19,72,21,8,22,16,26,86,40,29,20,49,51,52,35;
    37,47,18,52,83,85,80,68,27,36,69,56,38,40,44;
    16,13,31,60,76,89,28,63,79,26,72,30,71,38,36;
    27,17,40,65,75,76,66,22,49,26,54,80,69,31,25;
    87,62,53,30,85,35,14,29,55,60,5,33,64,57,74;
    88,46,69,38,51,79,80,42,48,50,15,4,26,64,60;
    44,50,82,85,5,29,30,27,24,76,59,81,17,19,31;
    59,24,52,42,40,70,32,30,10,12,56,76,49,20,19;
    15,73,61,72,87,11,20,14,85,49,13,4,89,90,5;
    37,58,18,9,78,82,34,56,83,73,31,72,79,42,23;

    Grazie mille e buona domenica


  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Re: Un piccolo ritocchino per una variante...

    Originariamente inviato da freetom
    Questo cod mi elimina le presenza multiple mentre adesso a me servirebbe che le multiple presenze restino evidenziate (del coloro giusto) ma visibili tutte...
    cerco di spiegarmi meglio...

    ho da analizzare 11 righe di 15 elementi ciascuna quindi alla fine avrò in tutto: 11x15=165 elementi

    ecco se faccio girare il cod alla fine me ne rimangono solo 78

    22 - 25 - 76 - 81 - 42 - 28 - 49 - 63 - 31 - 46 - 27 - 23 - 24 - 13 - 16
    19 - 72 - 21 - 8 - 26 - 86 - 40 - 29 - 20 - 51 - 52 - 35 - 37 - 47 - 18
    83 - 85 - 80 - 68 - 36 - 69 - 56 - 38 - 44 - 60 - 89 - 79 - 30 - 71 - 17
    65 - 75 - 66 - 54 - 87 - 62 - 53 - 14 - 55 - 5 - 33 - 64 - 57 - 74 - 88
    48 - 50 - 15 - 4 - 82 - 59 - 70 - 32 - 10 - 12 - 73 - 61 - 11 - 90 - 58
    9 - 78 - 34 -

    giustamente... perchè sono stati appunto eliminati i tot elementi multipli (presenti da 2 a 5 volte trovati)

    adesso vorrei che dopo l'elaborazione l'output rimanga invece un qualcosa del genere

    22,25,76,81,42,28,49,63,31,46,27,23,24,13,16;
    19,72,21,8,22,16,26,86,40,29,20,49,51,52,35;
    37,47,18,52,83,85,80,68,27,36,69,56,38,40,44;
    16,13,31,60,76,89,28,63,79,26,72,30,71,38,36;
    27,17,40,65,75,76,66,22,49,26,54,80,69,31,25;
    87,62,53,30,85,35,14,29,55,60,5,33,64,57,74;
    88,46,69,38,51,79,80,42,48,50,15,4,26,64,60;
    44,50,82,85,5,29,30,27,24,76,59,81,17,19,31;
    59,24,52,42,40,70,32,30,10,12,56,76,49,20,19;
    15,73,61,72,87,11,20,14,85,49,13,4,89,90,5;
    37,58,18,9,78,82,34,56,83,73,31,72,79,42,23;

    con tutti gli elementi in posizione originale e colorati con lo stesso colore relativo alla loro quantità rilevata nell'insieme... (es. se il 22 è presente 3 volte e il colore rosso è quello che indica la triplice presenza nell'insieme di 165 elementi vorrei che il 22 fosse evidenziato per
    ogni sua occorrenza visibile in rosso appunto)

    così:

    22,25,76,81,42,28,49,63,31,46,27,23,24,13,16;
    19,72,21,8,22,16,26,86,40,29,20,49,51,52,35;
    37,47,18,52,83,85,80,68,27,36,69,56,38,40,44;
    16,13,31,60,76,89,28,63,79,26,72,30,71,38,36;
    27,17,40,65,75,76,66,22,49,26,54,80,69,31,25;
    87,62,53,30,85,35,14,29,55,60,5,33,64,57,74;
    88,46,69,38,51,79,80,42,48,50,15,4,26,64,60;
    44,50,82,85,5,29,30,27,24,76,59,81,17,19,31;
    59,24,52,42,40,70,32,30,10,12,56,76,49,20,19;
    15,73,61,72,87,11,20,14,85,49,13,4,89,90,5;
    37,58,18,9,78,82,34,56,83,73,31,72,79,42,23;

    Grazie mille e buona domenica

    Il codice cui mi riferisco è questo:

    Codice PHP:

    $filename 
    "file.txt"
    $handle fopen($filename"r"); 
    $contents fread($handlefilesize($filename)); 
    fclose($handle); 

    $splitted split("\n"$contents); 
    $valore 45
    $str ""
    for(
    $i 0$i $valore $i++) { 
       
    $str .= $splitted[$i]; 

    $contents=$str
    preg_match_all("#d+#",trim($contents),$out,PREG_PATTERN_ORDER); 
    //sort($out[0]); 
    echo '<pre>'
    $freq array_count_values($out[0]); 

    $counter 0

    foreach (
    $freq as $k => $v) { 
      switch (
    $v) { 
        case 
    2
          echo 
    "<font color=lime>$k</font>"
          break; 
        case 
    3
          echo 
    "<font color=yellow>$k</font>"
          break; 
        case 
    4
          echo 
    "<font color=green>$k</font>"
          break; 
        case 
    5
          echo 
    "<font color=blue>$k</font>"
          break; 
        default: 
          if (
    $v <= 1) {    
             echo 
    "<font color=black>$k</font>"
          } else { 
             echo 
    "<font color=red>$k</font>"
          } 
          break; 
      } 
      
    $counter ++; 
      if ((
    $counter 15) == 0) { 
         echo 
    "
    \n"

      } else { 
         echo 
    '- '
      } 

    E' va benissimo tranne per il fatto che adesso mi servirebbe lasciare ogni riga con i suoi rispettivi 15 elementi (anche se ripetuti su + righe)

    Qualcuno/a mi aiuta a fare questo piccolo ritocchino???

    Thanks!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.