Problema Foreach && While

  • Creatore Discussione Creatore Discussione Mr. PHP
  • Data di inizio Data di inizio

Mr. PHP

Utente Attivo
31 Gen 2013
141
0
0
Salve ho un problema con il while nel foreach. Es:
PHP:
$a = array( 0 => 'xxx' , 12 => 'xxx' ecc... );
$b = 12;
		foreach ( $a as $key => $value ) {
			
			if( $key != 0 ){
							
				while ( $b> 1 ) {
					
					--$b;
					
					$a[ $key.' '.$b ] = 'xxx';

				}
				
			}
			
		}
Questo codice mi effettua solo un ciclo non tutti e 12.
 
Se ho ben capito cosa intendi, ovvero che il while non scorre le 12 volte per più di una singola chiave presente in a, dovresti poter risolvere spostando la dichiarazione di $b nel foreach, prima del while, così da resettarla ad ogni giro (altrimenti varrebbe sempre 1 dopo il primo giro di while):

PHP:
$a = array( 0 => 'xxx' , 12 => 'xxx' ecc... );
		foreach ( $a as $key => $value ) {

			if( $key != 0 ){
						
				$b = 12;	
				while ( $b> 1 ) {
					
					--$b;
					
					$a[ $key.' '.$b ] = 'xxx';

				}
			}
			
		}


Comunque, se il controllo del while funziona realmente così nella tua applicazione ti consiglierei di utilizzare un for che mi sembra più appropriato.
 
Ultima modifica:
Se ho ben capito cosa intendi, ovvero che il while non scorre le 12 volte per più di una singola chiave presente in a, dovresti poter risolvere spostando la dichiarazione di $b nel foreach, prima del while, così da resettarla ad ogni giro (altrimenti varrebbe sempre 1 dopo il primo giro di while):

PHP:
$a = array( 0 => 'xxx' , 12 => 'xxx' ecc... );
		foreach ( $a as $key => $value ) {

			if( $key != 0 ){
						
				$b = 12;	
				while ( $b> 1 ) {
					
					--$b;
					
					$a[ $key.' '.$b ] = 'xxx';

				}
			}
			
		}


Comunque, se il controllo del while funziona realmente così nella tua applicazione ti consiglierei di utilizzare un for che mi sembra più appropriato.

Ora va bene anche se non è quello che mi serve... Devo provare ad inserire il foreach nel while e vediamo che succede xke mi servirebbe la variabile $b non costante a 12
 
Voglio capire meglio il problema.
Cosa deve contenere alla fine dei due cicli l'array $a ?

Qualcosa di questo tipo?
Codice:
Array
(
    [0] => xxx
    [10] => xxx
    [10 11] => xxx
    [10 10] => xxx
    [10 9] => xxx
    [10 ...] => xx
    [11] => xxx
    [11 11] => xxx
    [11 10] => xxx
    [11 9] => xxx
    [11 ...] => xx
    [12] => xxx
    [12 11] => xxx
    [12 10] => xxx
    [12 9] => xxx
    [12 ...] => xx
)
O altro ?
 
Ok, scusa ho risolto cosi.
PHP:
$a = array( 0 => 'xxx' , 12 => 'xxx' ecc... );
$b = 12;
$c = $b;
$d = 0;

        foreach ( $a as $key => $value ) {

            if( $key != 0 ){
                        
                 ++$d;

                while ( $b> 1 ) {
                    
                    --$b;
                    
                    $a[ $key.' '.$b ] = 'xxx';

                }
                
$b = $c - $d;

            }
            
        }
 

Discussioni simili