Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ricerche ciclo for

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    3

    ricerche ciclo for

    Salve a tutti, mi sto approcciando da pochi giorni al php e sto seguendo la guida di base che c'è sul sito di html.it! Stavo diciamo "giocando" con i cicli for e dato un array(che ora vi mostro) volevo trovare la persona con l'età maggiore, quella con l'età minore e la media.

    L'età maggiore non c'è problema, per la media ci sono riuscito, ma seguendo lo stesso schema logico non mi riesce di trovare quella minore.
    inoltre mi da degli errori in visualizzazione che non mi spiego!
    il codice è questo :
    (ho usato a per le iterazioni del ciclo, b per determinare l'età più grande, e per quella più piccola, la c per determinare la grandezza dell'array e quindi stabilire quando il ciclo deve fermarsi, la d per la somma delle età per fare la media.
    Codice PHP:
    < ?php
     $a
    =0;
         
    $b=0;
         
         
    $persone=array(array("nome"=>"mattia","età"=>"90"),
                        array(
    "nome"=>"paolo","età"=>"100"),
                        array(
    "nome"=>"giovanni","età"=>"70"),
                          array(
    "nome"=>"mario","età"=>"50"));
         
    $c=count($persone);
        
    $d=0;
        
    $e=200;
         for(
    $a=0$a<=$c$a=$a+1){
            if(
    $persone[$a]["età"]>=$b){
             
    $b=$persone[$a]["età"];              
            } 
            
    $d=$d+$persone[$a]["età"];
         }
         for(
    $a=0$a<=$c$a=$a+1){    
            if(
    $persone[$a]["età"]<=$e){
             
    $e=$persone[$a]["età"];
            }  
         }
     echo
    "la persona più grande ha $b anni";
     
    $media=$d/$c;
     echo
    "la media delle età è di $media anni";
      echo
    "la persona piu giovane ha $e anni";
     
    ?> 
    la visualizzazione nella pagina web è questa :
    codice:
    Notice:  Undefined offset:  4 in c:\program files (x86)\easyphp1-8\www\prova.php on line 93
    
    Notice:  Undefined offset:  4 in c:\program files (x86)\easyphp1-8\www\prova.php on line 96
    
    Notice:  Undefined offset:  4 in c:\program files (x86)\easyphp1-8\www\prova.php on line 99
    
    Notice:  Undefined offset:  4 in c:\program files (x86)\easyphp1-8\www\prova.php on line 100
     la persona più grande ha 100 annila media delle età è di 77.5 annila persona piu giovane ha  anni
    la linea dove sta scritto $a=0; è la numero 83.
    Grazie a tutti per l'aiuto e scusate se è una domanda scema.


    Spiego brevemente il ragionamento del codice: con un ciclo for analizzo singolarmente ogni elemento dell'array, per l'età maggiore la prima volta se l'età sarà maggiore di una variabile che ho dichiarato con valore 0 allora l'età da visualizzare prenderà quel valore, ogni volta che trova un età più grande di quella che ha gia come valore la sostituisce al valore stesso. alla fine avrò la più grande.

    per la minore ho dichiarato una variabile con un età molto alta e ogni volta che la variabile trova un età inferiore a quella che ha gia come valore, la sostituisce al valore stesso. alla fine dovrei avere la più piccola ma non è cosi. grazie della pazienza.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Gli array cominciano con l'indice 0. Quindi devi mettere for ($a=0;$a<$c;$a++)
    $a++ equivale a $a=$a+1
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Gli array cominciano con l'indice 0. Quindi devi mettere for ($a=0;$a<$c;$a++)
    $a++ equivale a $a=$a+1
    L'indice inizia da "0"...

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E ?
    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
    Feb 2015
    Messaggi
    3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    E ?
    lo hai letto il codice? e ho postato il risultato.... non funziona ma non capisco il perchè.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Allora....
    count($persone) = 4
    metti for ($a=0;$a<=$c;$a++) quindi fai 5 cicli da 0 a 4 e non 4 cicli con for ($a=0;$a<$c;$a++)
    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

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    $a<=$c ti fa apparire quel notice
    la lunghezza dell'array è 4 ma l'ultimo indice $a è 3

    visto che stai imparando, inizia a farti mostrare a schermo i valori delle variabili

    per la cronaca, potresti fare anche tutto in un unico ciclo for

    edit: scusa badaze, ci siamo sovrapposti

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 © 2025 vBulletin Solutions, Inc. All rights reserved.