Visualizzazione risultati 1 fino 11 di 11

Discussione: incremento variabile ++

  1. #1
    Guest

    Question incremento variabile ++

    Una cosa strana.

    Ho recuperato un numero da un cookie via PHP ma non riesco ad incrmentarlo con ++ ma devo per forza aggiungerci +1.
    Come si spiega?!

    Codice PHP:
    $var = (int) $_COOKIES[...]
    $var++; // non funziona
    $var=$var+1; // funziona!

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Avrai sbagliato qualcos'altro nel codice in cui l'hai provato. A naso, utilizzavi il valore $var++ da qualche parte, ma il post-incremento ti restituisce il valore prima dell'incremento. Forse volevi usare ++$var ?

  3. #3
    Guest

    Predefinito

    No, il codice è banale, ed è praticamente questo. In più c'è solo una file_put_contents() che alla fine mi salva appunto quella $var per vederne il contenuto.

    Non è normale vero? Il ++ dovrebbe funzionare!
    Ultima modifica di robertobizzarri : 31-05-2011 alle ore 15.59.46

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Puoi indicare il codice per esteso?
    P.s.: hai capito ciò che ha scritto Dreadnaut?

  5. #5
    Guest

    Predefinito

    Da ciò che so non cambia niente tra ++$var e $var++, se non che la ++$var agisce direttamente nella memoria (come & in una funzione: function fuct(&$var)), mentre con $var++ viene creata un'altra variabile ominima temporanea con il valore incrementato, lasciando l'originale invariata.

    Ergo, prova così:
    Codice PHP:
    $var = 0;
    ++
    $var;
    echo
    $var; # 1;

  6. #6
    Guest

    Predefinito

    Capito perfettamente. Ma non è il mio caso.
    Codice PHP:
    $phpstats_rettime = (int) $_COOKIE['phpstats_rettime'];
    $phpstats_returns = (int) $_COOKIE['phpstats_returns'];

    if ((
    time()-$phpstats_rettime) > (1*3600))
    {
    $mydate = date("d/m/y H:i:s");
    $myip = long2ip($ip);

    $phpstats_returns++; // Questo non funziona
    file_put_contents('../!cookies.txt', "Welcome back!\n$mydate - $myip\n$phpstats_rettime - $phpstats_returns\n\n", FILE_APPEND);
    }
    else
    {
    $phpstats_returns = 1;
    }

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Risalvi i cookie piu' avanti nel codice poi?

    Il risultato sbagliato che ottieni sono quindi piu' righe con lo stesso returns nel log? Mentre se a quella riga sostituisci un += 1, il problema non si presenta?

    @biccheddu
    La differenza importante era fra $x = $var++ e $x = ++$var
    Ultima modifica di dreadnaut : 31-05-2011 alle ore 16.40.16

  8. #8
    Guest

    Predefinito

    Mmmhhh usando quel codice in un file.php separato funziona.

    Il tutto fa parte di un programma più ampio, quella è una parte. Però è del tutto slegata dal resto. E la cosa strana è che con ++ NON funziona, ma con +1 sì.
    Boh pazienza, rinuncio.
    Grazie a tutti.

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Azzardo, senza vedere il resto codice, che in qualche modo ogni tanto tu finisca con il non risalvare il cookie, oppure il < 3600 non e' soddisfatto per qualche motivo.

    Poi boh, se funziona col += 1, e sia, ma davvero non c'e' differenza.

  10. #10
    Guest

    Predefinito

    Io avevo capito che lui volesse incrementare la variabile, non valorizzarne un'altra con il valore dell'altra incrementato

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Beh, metti che stesse cercando di stamparla, lo stesso discorso si applica a echo $var++ ad esempio.

Regole di scrittura

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