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.