Remember me - Lost password?
m3c__ : about 1 year ago
#PHP, operatore goto, che ne pensate?

Ne sento parlare malissimo ma giusto ora mi servirebbe... sono combattuto (non uso la OOP, ancora).
from nato a Locarno - vivo a Pantelleria in php - 18 replies
dankuzzo : about 1 year ago
effettivamente eseguire i salti col goto non e' il massimo :'D
from Montpellier - detail
m3c__ : about 1 year ago
Serve un bel po' di codice in più per ottenere lo stesso risultati ma amen, fatto senza... ringraziamo il sign. for
from nato a Locarno - vivo a Pantelleria - detail
greenkey : about 1 year ago
usare il break?
una chiamata a funzione?

sarò che io ho imparato a programmare senza goto, ma non ne ho mai avuto esigenza...

che ti serve fare?
from Milano - detail
m3c__ : about 1 year ago
Il programma in questione deve valutare una serie di condizioni a partire da una variabile iniziale. In alcuni casi deve aggiornare la variabile e ricominciare ad eseguire lo script da un determinato punto. Un po' come uno dei tanti diagrammi di flusso "si-no" che si vedono girare su meemi.

Ho risolto comunque, mettendo tutto dentro un for ed eseguendo determinati pezzi di codice solo se i valori di alcune variabili sono in linea con le aspettative. Più complesso a dirsi che a farsi
from nato a Locarno - vivo a Pantelleria - detail
ragnarokkr : about 1 year ago
Idea: Potresti usare un costrutto while .. switch

EDIT: ovviamente se conosci a priori i valori da verificare nelle condizioni, sennò ciccia ....
from Pietra Ligure (Savona), Italy - detail
greenkey : about 1 year ago
eh si, se torni indietro diventa un ciclo, quindi sta a te identificare qual'è il migliore: for, do..while, while..do etc

poi per fare certe cose a seconda del valore, come suggerisce @ragnarokkr c'è lo switch
from Milano - detail
rejected : about 1 year ago
Esiste un solo caso in cui il goto come istruzione a sè merita di esistere ed è uscire da 2+ cicli annidati in un colpo solo: è una soluzione migliore visivamente, è più efficiente e globalmente migliore. Per il resto mai usarlo. Mai.

Piccola dimostrazione(C++)...

code

// 1. Without goto
bool needExit = false;
for(int i=0; i<10;i++)
{
    for(int j=0; j<10;j++)
    {
        if(CONDITION)
        {
            needExit = true;
            break;
        }
    }

    if(needExit)
    {
        break;
    }
}


// 2. With goto:
for(int i=0; i<10;i++)
{
    for(int j=0; j<10;j++)
    {
        if(CONDITION)
        {
            goto out; // jump to label 'out'
        }
    }
}

out:
// ...
from Isola-che-non-c'è - detail
ragnarokkr : about 1 year ago
@rejected, però è anche vero che con il php, hai la possibilità di specificare nel break da quanti livelli di annidamento desideri uscire..
from Pietra Ligure (Savona), Italy - detail
rejected : about 1 year ago
@ragnarokkr: hai ragione. Il PHP non mi ha mai fatto impazzire.
from Isola-che-non-c'è - detail
dankuzzo : about 1 year ago
@ragnarokkr ma che brutto!!!!
from Montpellier - detail
ragnarokkr : about 1 year ago
eheh.. immagino.. d'altronde alle fine son tutti dialetti ed evoluzioni/involuzioni del C/C++
from Pietra Ligure (Savona), Italy - detail
ragnarokkr : about 1 year ago
uh.. non t'avevo visto @dankuzzo cosa intendi?
from Pietra Ligure (Savona), Italy - detail
dankuzzo : about 1 year ago
che brutto uscire dai cicli con il goto
from Montpellier - detail
ragnarokkr : about 1 year ago
sì sì, infatti io ho menzionato o un costrutto while..do abbinato ad uno switch, oppure come caso limite una break con la quantità di livelli di annidamento da cui uscire... la goto proprio non l'ho cagata (gergo informatico ) di striscio
from Pietra Ligure (Savona), Italy - detail
recenso : about 1 year ago
il goto è bandito
from Casa mia - detail
dankuzzo : about 1 year ago
tranne nell'asm (altrimenti voglio vedere come fate) ahahahaha
from Montpellier - detail
rejected : about 1 year ago
@dankuzzo: beh, vorrei vedere...
from Isola-che-non-c'è - detail
m3c__ : about 1 year ago
@rejected eh il mio caso era molto simile, solo che il mio "out" è poco prima dei due cicli.

@ragnarokkr non le conosco sono i risultati di una query le variabili, quindi niente switch... in ogni caso di solito uso if+(elseif*n)+else, lo trovo più compatto.

Vi posto il codice (quasi) completo, così mi prendete un po' in giro

code
$first_step = mysql_query("SELECT X") or die("Errore query select_pro: " . mysql_error());
while($prodotti_first = mysql_fetch_array($first_step))
{
$actual_code = $prodotti_first[X];
$pro_url = $prodotti_first[X];
$count=1;
for ($i=0;$i<$count;$i++)
{
$second_step = mysql_query("SELECT X LIKE '%$actual_code%'") or die("Errore query first_step: " . mysql_error());
$second_step_num = mysql_affected_rows();
if ($second_step_num==0)
{
$third_step = mysql_query("SELECT X LIKE '%$actual_code%'") or die("Errore query second_step: " . mysql_error());
$third_step_num = mysql_affected_rows();
if ($third_step_num==0)
{
$path = "../my-path/".$pro_url;
if (file_exists($path.".php"))
{
unlink($path.".php");
}
}
else
{
$prodotti_third = mysql_fetch_array($third_step);
$actual_code = $prodotti_third[X];
$count++;
}
}
}
}
from nato a Locarno - vivo a Pantelleria - detail
New to meemi?
Join now to quickly and easily way

Problem? Rigenerate new code
By clicking the button, you agree all terms of service