Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    40

    Trovare il valore piu grande tra array

    Salve a tutti,
    ho questa esigenza:
    ho 4 array con all'interno dei numeri (da 1 a 6,la quantità è variabile)
    Dovrei fare una pagina che mi permetta di trovare quale dei 4 array abbia il numero piu alto (in caso di pareggio andare a vedere il secondo piu alto. In base all'array poi scrivere una parola.
    Mi sapete indicare quali funzioni posso usare perche ho provato array_diff ma non fa quello che voglio.

    Vi posto qui la funzione fino al punto in cui mi sono fermato
    codice:
    if (isset($_POST['submit']))    {      
            $disc =$_POST['disc'];
            $sfi =$_POST['sfi'];
            $foll =$_POST['foll'];
            $dol =$_POST['dol'];
            
            echo "Disciplina: ";
            for ($i = 1; $i <= $disc; ++$i) {
            $ris = rand(1,6);
            $disciplina[] = $ris;
            if ($ris <=3)     {
                                $vdis = $vdis +1;
                            }
            }    
            sort ($disciplina);
            foreach ($disciplina as $value) {echo "$value,";}
            
            echo "<br>Sfinimento: ";
            for ($i = 1; $i <= $sfi; ++$i) {
            $ris = rand(1,6);
            $sfinimento[] = $ris;
            if ($ris <=3)     {
                                $vsfi = $vsfi +1;
                            }
            }    
            sort ($sfinimento);
            foreach ($sfinimento as $value) {echo "$value,";}
            
            echo "<br>Follia: ";
            for ($i = 1; $i <= $foll; ++$i) {
            $ris = rand(1,6);
            $follia[] = $ris;
            if ($ris <=3)     {
                                $vfoll = $vfoll +1;
                            }
            }    
            sort ($follia);
            foreach ($follia as $value) {echo "$value,";}
    
    
            echo "<br>Dolore: ";
            for ($i = 1; $i <= $dol; ++$i) {
            $ris = rand(1,6);
            $dolore[] = $ris;
            if ($ris <=3)     {
                                $vdol = $vdol +1;
                            }
            }    
            sort ($dolore);
            foreach ($dolore as $value) {echo "$value,";}
            
            $giocatore = ($vdis + $sfi + $vfoll);
            if ( $giocatore >= $vdol ) { 
                  echo "<br>Vince il giocatore.";
                    }
             else { 
                          echo "<br>Il giocatore perde."; 
                    }
        }
    Ultima modifica di Tri@de; 01-10-2018 a 09:50

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Per avere il valore massimo contenuto in un array puoi usare la funzione max().
    Potresti prendere così i valori massimi di ogni array e poi confrontarli.
    In caso di pareggio dipende da come devi gestire i dati.
    Per esempio: ti interessa mantenere i valori contenuti negli array per usi successivi oppure no? In caso "no", allora trovati i massimi potresti eliminare tali valori, così che un secondo utilizzo di max() ti troverebbe i "secondi massimi" per procedere ad un nuovo confronto tra chi aveva pareggiato nel primo giro e così via.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    40
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Per avere il valore massimo contenuto in un array puoi usare la funzione max().
    Potresti prendere così i valori massimi di ogni array e poi confrontarli.
    In caso di pareggio dipende da come devi gestire i dati.
    Per esempio: ti interessa mantenere i valori contenuti negli array per usi successivi oppure no? In caso "no", allora trovati i massimi potresti eliminare tali valori, così che un secondo utilizzo di max() ti troverebbe i "secondi massimi" per procedere ad un nuovo confronto tra chi aveva pareggiato nel primo giro e così via.
    Esattamente. Io devo vedere il valore maggiore: se ho 1,1,3,6 e 2,5,6 in questo caso i 6 si eliminano e controllo i secondi. In questo cado il 5 vince. nel caso avessi tuttu valori uguali, vince chi ha piu dadi.
    Grazie!

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Prova questo. Senza alcuna garanzia.

    Codice PHP:
    <?php
    function pippo(&$array) {
     
    //---- Salva l'array come json per avere una stringa
     
    $before json_encode($array);
     
    //---- Ricerca del massimo
     
    $max      0;
     
    $arrMax   = array();
     foreach(
    $array as $key => $subarray) {
      if (
    count($subarray) == 0) continue;
      
    $temp         max($subarray);
      if (
    $temp $max$max $temp;
      
    $arrMax[$key] = $temp;
     }
     
    //---- Cancellazione degli array che non contengono il valore massimo
     
    foreach($array as $key => $subarray) {
      if (
    count($subarray) == 0) continue;
      if (
    $arrMax[$key] != $max ) unset($array[$key]);
     }
     
    //---- Cancellazione dei valori massimi
     
    foreach($array as $key => $subarray) {  
      foreach(
    $subarray as $key2 => $value) {
       if(
    $value == $max) unset($subarray[$key2]);
      }
      
    $array[$key] = $subarray;
     }
     
    //---- Salva l'array come json per avere una stringa
     
    $after json_encode($array);
     
    //---- Se ci sono differenze tra prima e dopo si passa al passo successivo
     
    if ($after != $before && count($array)>1pippo($array);
     
    //---- Torna gli indici dei posti rimanenti => i migliori
     
    $return = array();
     foreach(
    $array as $key => $subarray$return[] = $key;
     return 
    $return;
    }
    $array = array();
    $array[0] = [1246];
    $array[1] = [1256];
    $array[2] = [126];
    $array[3] = [1356];
    $array[4] = [135];
    $array[5] = [1356];
    var_dump(pippo($array));
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    40
    Grazie mille!

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.