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!
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!
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 ?
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
Puoi indicare il codice per esteso?
P.s.: hai capito ciò che ha scritto Dreadnaut?
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;
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;
}
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
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.
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.
Io avevo capito che lui volesse incrementare la variabile, non valorizzarne un'altra con il valore dell'altra incrementato![]()
Beh, metti che stesse cercando di stamparla, lo stesso discorso si applica a echo $var++ ad esempio.