Visualizzazione risultati 1 fino 10 di 10

Discussione: Problema con ciclo e array

  1. #1
    Guest

    Predefinito Problema con ciclo e array

    Ciao a tutti!

    Ho questo codice:
    Codice PHP:
    for($i = 0; $i == 6; $i++) {
    $temp = $dispari[$i];
    if(
    $temp == 0) {
    $endispari[] = 0;
    } else if(
    $temp == 1) {
    $endispari[] = 1;
    } else if(
    $temp == 2) {
    $endispari[] = 2;
    } else if(
    $temp == 3) {
    $endispari[] = 3;
    } else if(
    $temp == 4) {
    $endispari[] = 4;
    } else if(
    $temp == 5) {
    $endispari[] = 5;
    } else if(
    $temp == 6) {
    $endispari[] = 6;
    } else if(
    $temp == 7) {
    $endispari[] = 7;
    } else if(
    $temp == 8) {
    $endispari[] = 8;
    } else if(
    $temp == 9) {
    $endispari[] = 9;
    } else if(
    $temp == "A") {
    $endispari[] = 0;
    } else if(
    $temp == "B") {
    $endispari[] = 1;
    } else if(
    $temp == "C") {
    $endispari[] = 2;
    } else if(
    $temp == "D") {
    $endispari[] = 3;
    } else if(
    $temp == "E") {
    $endispari[] = 4;
    } else if(
    $temp == "F") {
    $endispari[] = 5;
    } else if(
    $temp == "G") {
    $endispari[] = 6;
    } else if(
    $temp == "H") {
    $endispari[] = 7;
    } else if(
    $temp == "I") {
    $endispari[] = 8;
    } else if(
    $temp == "J") {
    $endispari[] = 9;
    } else if(
    $temp == "K") {
    $endispari[] = 10;
    } else if(
    $temp == "L") {
    $endispari[] = 11;
    } else if(
    $temp == "M") {
    $endispari[] = 12;
    } else if(
    $temp == "N") {
    $endispari[] = 13;
    } else if(
    $temp == "O") {
    $endispari[] = 14;
    } else if(
    $temp == "P") {
    $endispari[] = 15;
    } else if(
    $temp == "Q") {
    $endispari[] = 16;
    } else if(
    $temp == "R") {
    $endispari[] = 17;
    } else if(
    $temp == "S") {
    $endispari[] = 18;
    } else if(
    $temp == "T") {
    $endispari[] = 19;
    } else if(
    $temp == "U") {
    $endispari[] = 20;
    } else if(
    $temp == "V") {
    $endispari[] = 21;
    } else if(
    $temp == "W") {
    $endispari[] = 22;
    } else if(
    $temp == "X") {
    $endispari[] = 23;
    } else if(
    $temp == "Y") {
    $endispari[] = 24;
    } else {
    $endispari[] = 25;
    }
    }

    $sommadispari = array_sum($endispari);
    echo
    "$sommadispari";
    In questo ciclo ho 2 array...l'array "dispari" da dove prendo i valori che vado ad esaminare e l'array "endispari" dove vanno a finire i valori stabiliti dall'if/else, poi utilizzando array_sum sommo i valori dell'array finale e lo stampo a video!

    Il problema è che quando vado a vedere il valore di $sommadispari, mi da 0 quando invece dovrebbe restituirmi una somma.

    In pratica nel ciclo io prendo dei valori di un array (che sono in tutto 7) e vado ad assegnare dei valori in base al contenuto di una determinata casella dell'array.
    Ad es:
    se in dispari[1] ho la lettera "E", in endispari[] andrà a finire un numero che ho deciso io e così via...

    Però non riesco proprio a capire come mai non funzioni, sono 3 giorni che non ne vengo a capo!
    Se avete qualche suggerimento ve ne sarei grato!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Dalla condizione del for, direi che la condizione non è mai verificata.

    Codice PHP:
    for($i = 0; $i == 6; $i++)
    Per il resto non ho nemmeno letto cosa dovrebbe fare il codice. Se ancora non funziona fammi sapere che leggo anche il contenuto.

    Ciao!

  3. #3
    Guest

    Predefinito

    Ho sosituito "==" con ">=" ma il problema persiste

  4. #4
    Guest

    Predefinito

    con <=

    se intendi 0,1,2,3,4,5,6
    con <
    se intendi 0,1,2,3,4,5
    Ultima modifica di FormularioDiDrakensang : 10-10-2014 alle ore 18.22.55

  5. #5
    Guest

    Predefinito

    Ops...

  6. #6
    Guest

    Predefinito

    Ho avuto di nuovo problemi...nonostante abbia cambiato quello che mi hai detto...l'array "endispari" continua a rimanere vuoto e di conseguenza la somma è sempre 0...

    Hai idee?

  7. #7
    Guest

    Predefinito

    Codice:
    <?php
    
    $dispari = array(1,2,3,4,5,'A');
    
    for($i = 0; $i <= 5; $i++) { 
     $temp = $dispari[$i]; 
                 if($temp == 0) { 
                     $endispari[] = 0; 
                 } else if($temp == 1) { 
                     $endispari[] = 1; 
                 } else if($temp == 2) { 
                     $endispari[] = 2; 
                 } else if($temp == 3) { 
                     $endispari[] = 3; 
                 } else if($temp == 4) { 
                     $endispari[] = 4; 
                 } else if($temp == 5) { 
                     $endispari[] = 5; 
                 } else if($temp == 6) { 
                     $endispari[] = 6; 
                 } else if($temp == 7) { 
                     $endispari[] = 7; 
                 } else if($temp == 8) { 
                     $endispari[] = 8; 
                 } else if($temp == 9) { 
                     $endispari[] = 9; 
                 } else if($temp == "A") { 
                     $endispari[] = 0; 
                 } else if($temp == "B") { 
                     $endispari[] = 1; 
                 } else if($temp == "C") { 
                     $endispari[] = 2; 
                 } else if($temp == "D") { 
                     $endispari[] = 3; 
                 } else if($temp == "E") { 
                     $endispari[] = 4; 
                 } else if($temp == "F") { 
                     $endispari[] = 5; 
                 } else if($temp == "G") { 
                     $endispari[] = 6; 
                 } else if($temp == "H") { 
                     $endispari[] = 7; 
                 } else if($temp == "I") { 
                     $endispari[] = 8; 
                 } else if($temp == "J") { 
                     $endispari[] = 9; 
                 } else if($temp == "K") { 
                     $endispari[] = 10; 
                 } else if($temp == "L") { 
                     $endispari[] = 11; 
                 } else if($temp == "M") { 
                     $endispari[] = 12; 
                 } else if($temp == "N") { 
                     $endispari[] = 13; 
                 } else if($temp == "O") { 
                     $endispari[] = 14; 
                 } else if($temp == "P") { 
                     $endispari[] = 15; 
                 } else if($temp == "Q") { 
                     $endispari[] = 16; 
                 } else if($temp == "R") { 
                     $endispari[] = 17; 
                 } else if($temp == "S") { 
                     $endispari[] = 18; 
                 } else if($temp == "T") { 
                     $endispari[] = 19; 
                 } else if($temp == "U") { 
                     $endispari[] = 20; 
                 } else if($temp == "V") { 
                     $endispari[] = 21; 
                 } else if($temp == "W") { 
                     $endispari[] = 22; 
                 } else if($temp == "X") { 
                     $endispari[] = 23; 
                 } else if($temp == "Y") { 
                     $endispari[] = 24; 
                 } else { 
                     $endispari[] = 25;                  
                  }              
             } 
              
             $sommadispari = array_sum($endispari); 
                     echo "$sommadispari";  
                     
    ?>
    output 15, $endispari ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 0 )
    a cosa serva, rimane un mistero
    Ultima modifica di FormularioDiDrakensang : 11-10-2014 alle ore 12.22.42

  8. #8
    Guest

    Predefinito

    È un algoritmo per il calcolo del codice fiscale...non sto a spiegare il procedimento...
    Difatti c'è un altro for come questo ma dove prendo in considerazione gli elementi in posizione pari di un array...in quel caso i numeri assegnati sono totalmente differenti!

    Continua a non funzionare, anzi se utilizzo un array precaricato si..ma se uso il mio metodo di riempimento dell'array tramite una funzione non va...
    La funzione è giusta e l'ho verificata, non capisco perchè

  9. #9
    Guest

    Predefinito

    ma se uso il mio metodo di riempimento dell'array tramite una funzione


    ^--- quindi è qui il problema

  10. #10
    Guest

    Predefinito

    Sto facendo vari controlli stampando a video di volta in volta i valori...il problema mi sa che sono le lettere...perché ho fatto un'altra prova riempiendo un array con lettere e numeri...i numeri vengono inseriti normalmente, le lettere no (viene inserito uno 0 al loro posto)..

    Ho fatto la prova a vedere se fosse perché alcune erano maiuscole o minuscole ma non è case sensitive e ho provato anche a usare il define:
    define('a','a'); etc..
    Ma il problema persiste...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •