Iterazione Foreach dentro un ciclo for

Philophp

Nuovo Utente
15 Feb 2011
2
0
0
Ciao a tutti, mi chiamo Filippo, programmo in PHP da ieri con decorrenza domani (!)
e vi scrivo perchè non riesco a ciclare correttamente una tabella che mostri in automatico le città del lotto (estraendo i nomi da un array).
Non genera errori, ma semplicemente ripete tutte le città e ne include una sola (la prima):


Codice:
<?php

    echo "<table border=\"1\">";
    
    // questo è il ciclo per le 11 estrazioni
    for ($ruota=1; $ruota<=11; $ruota++)
            {
                echo "<tr><td>Ruota di ";
                // i nomi delle città
                $citta=array('Bari', 'Cagliari', 'Firenze', 'Genova', 'Milano', 'Napoli', 'Palermo', 'Roma', 'Torino', 'Venezia', 'Nazionale');
                foreach ($citta as $valore)
                {
                    echo $valore."</td>";
                }
                    
                 // le 5 estrazioni                       
                for ($estra=1; $estra<=5; $estra++)
                {
                    echo "<td>".mt_rand(1,90)."</td>";
                    }
                    
            echo "</tr>";
                
            }

echo "</table>";
    
    ?>

Suggerimenti?
grazie,
F.
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Il ciclo è organizzato male. Prova così:
PHP:
<?php
$cities = array('Bari', 'Cagliari', 'Firenze', 'Genova', 'Milano', 'Napoli', 'Palermo', 'Roma', 'Torino', 'Venezia', 'Nazionale');

echo '<table border="1">';

foreach($cities as $city)
{
	echo '<tr>';
	echo "<td>Ruota di {$city}</td>";
	
	for($i = 1; $i <= 5; $i++)
		echo '<td>'. mt_rand(1, 90) .'</td>';
	
	echo '</tr>';
}

echo '</table>';
?>
 

Philophp

Nuovo Utente
15 Feb 2011
2
0
0
ciao Alessandro,

grazie, non ci sarei arrivato nemmeno tra 6000 anni.
Ma dimmi per favore, è sbagliato mettere un foreach dentro un for?
come mai poi non hai chiuso le {} del for?

ciao,
F.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Dipende cosa devi fare. Nel tuo caso la logica dell'applicazione era sbagliata, perché stavi cercando di fare una cosa diversa da quella che chiedevi.
Non ho messo le parentesi graffe nel for perché, quando un blocco di codice è formato da una sola istruzione, si possono anche omettere.
 

atrx

Nuovo Utente
10 Ago 2008
6
0
0
buon giorno,
io ho un problema tipo quello di questo topic...

dovrei cancellare le prime righe da un file ed ho usato gli array per trovare la riga dove cè <body>

cioè ho inserito il contenuto del file dentro un array poi ho inserito questo codice:

ho provato così però non funge....

array del file inserito in $lines

//cerco la ricorrenza <body>
$nome="<body>";
foreach ($lines as $key => $value){

if (stristr($value, $nome))
for($i=0; $i >=$key;$i++){

// vorrei cancellare le righe da 0 a $key che sarebbe dove c è <body>
unset($lines[$i]);

}

}

questo mi trova in numero di linea dove è contenuto <body> però il ciclo for non funziona così.
cioè non cancella proprio niente....



dove sbaglio ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
prova cosi:

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
    if (stristr($value, $nome)) {        
            unset($lines[$key]);       
    }
}
 

atrx

Nuovo Utente
10 Ago 2008
6
0
0
Ciao,
prova cosi:

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
    if (stristr($value, $nome)) {        
            unset($lines[$key]);       
    }
}


si ok però a me serve che mi cancella gli elementi array fino alla chiave che si trova <body>

cioè da values[0] a $values[$key]
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Scusa non avevo capito

e forse non ancora

cosi potrebbe andare?

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
        // se la riga non contiene body la cancello
    if (!stristr($value, $nome)) {
        unset($lines[$key]);
        // appena trovo body esco dal ciclo
    } else {
        exit;
    }
}
 

atrx

Nuovo Utente
10 Ago 2008
6
0
0
Scusa non avevo capito

e forse non ancora

cosi potrebbe andare?

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
        // se la riga non contiene body la cancello
    if (!stristr($value, $nome)) {
        unset($lines[$key]);
        // appena trovo body esco dal ciclo
    } else {
        exit;
    }
}



Scusa non avevo capito

e forse non ancora

cosi potrebbe andare?

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
        // se la riga non contiene body la cancello
    if (!stristr($value, $nome)) {
        unset($lines[$key]);
        // appena trovo body esco dal ciclo
    } else {
        exit;
    }
}



Si l 'idea è buona però mi cancella tutto l array..sembra che supera la condizione che hai messo....

e poi mi serviva che anche body veniva cancellato ..ma quello l ho risolto così:

PHP:
$nome = "<body>";
foreach ($lines as $key => $value) {
        // se la riga non contiene body la cancello
    if (!stristr($value, $nome)) {
        unset($lines[$key]);
        // appena trovo body esco dal ciclo
    } else {
        
	foreach ($lines as $key => $value){
	$nome="<body>";
        if (stristr($value, $nome))
               unset($lines[$key]);
	       }
	
	
	
    }
}

cioè facendo un altro foreach e cancellando la riga body... l ho messa dentro l' else perchè mi serviva che il codice non uscisse con exit perchè dopo c'è altro codice da svolgere.

però rimane il fatto che si cancella tutto l array...strano cmq a vederlo mi sembrava che non dovrebbe ...mah


io ho trovato una alternativa così:


PHP:
foreach ($lines as $key => $value){
	$nome="<body>";
        if (stristr($value, $nome))
               unset($lines[$key]);
	       }
	       
	       
	       foreach ($lines as $key => $value){
	$nome="</head>";
	if (stristr($value, $nome))
               unset($lines[$key]);
	       }
	       
	       foreach ($lines as $key => $value){
	       $nome="<dateModified>";	       
	       if (stristr($value, $nome))
               unset($lines[$key]);
	       }
	       foreach ($lines as $key => $value){
	       $nome="<title>";	       
	       if (stristr($value, $nome))
               unset($lines[$key]);
	       }
	       foreach ($lines as $key => $value){
	       $nome="<head>";	       
	       if (stristr($value, $nome))
               unset($lines[$key]);
	       }


ma non mi piace molto anche se cmq. funziona, ma non vorrei che variasse qualche intestazione e allora poi rimarrei fregato.
 
Ultima modifica:

atrx

Nuovo Utente
10 Ago 2008
6
0
0
ok ci sono riuscito...aggiungendo break; al posto di exit.

grazie sei stato molto gentile dandomi questa dritta.. :fonzie:

ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Iterazione in PHP PHP 8
V Somma foreach PHP 2
Z problemi con foreach insert into PHP 10
P Passare i risultati di un foreach in un modal. Help! PHP 2
I Eecuzione di javascript in ciclo foreach php. PHP 7
P Array da foreach PHP 2
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
Alex_70 foreach explode query PHP 3
P Jquery event nel foreach php jQuery 3
S [PHP] Ciclo foreach su più array PHP 2
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M [PHP] Errore in ciclo foreach PHP 1
S Unire due foreach simili PHP 5
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
L Estrarre e muovere un campo da un foreach PHP 0
C query dentro foreach PHP 1
JackIlPazzo Warning: Invalid argument supplied for foreach() PHP 1
otto9due Problema if elseif o foreach.. o non capisco cosa non funzioni.. PHP 4
otto9due Questione di array.. I risultato del foreach non è quello che voglio.. PHP 4
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Alternativa a foreach ?! PHP 7
W foreach contenuto PHP 0
M Aiuto su come procedere con un ciclo foreach PHP 4
F Warning: Invalid argument supplied for foreach() PHP 3
felino Foreach annidati: soluzione? PHP 1
N Problema aggiornamento dati con foreach PHP 1
M Ricostruire array evitando il foreach PHP 0
N Problema FOREACH() PHP 3
Monital intabellare array bidimensionale, foreach impazziti PHP 13
M Problema Foreach && While PHP 4
M ciclo foreach che non funziona PHP 5
Emix [RISOLTO]Impostare focus su textbox dopo foreach jQuery 16
nuovecode interrompere e riprendere un foreach PHP 1
M problema con ciclo foreach per estrarre dati da un database PHP 22
P Problema con array e foreach PHP 15
M elimina valori doppi in ciclo foreach PHP 3
C Risultati ciclo foreach in tabella PHP 13
nim inserire dati in tabella con ajax (ciclo foreach) Ajax 10
F Rinomina file multipli con foreach PHP 1
Athene Interazione tra il foreach e una tabella html PHP 12
F Foreach PHP PHP 10
F Foreach con link selezionato PHP 3
M Ciclo foreach dentro un ciclo while PHP 5
nim funzione array(); e chiarimenti foreach PHP 6
A incolonnare i risultati foreach HTML e CSS 1
Monital array non riconosciuta fuori dal foreach PHP 9
@ foreach...in foreach (credo) PHP 1
I Più foreach in database PHP 1
Z FOREACH o FOR PHP 4

Discussioni simili