Dà la condizione per vera (ho provato sia in locale che su AV) ._.Codice PHP:
if("STRINGA CHE VUOI TU"==0) echo "OK";
qualcuno ha una spiegazione o è un bug del PHP?
Dà la condizione per vera (ho provato sia in locale che su AV) ._.Codice PHP:
if("STRINGA CHE VUOI TU"==0) echo "OK";
qualcuno ha una spiegazione o è un bug del PHP?
No, solo confrontando una stringa con lo zero numerico.
EDIT:
Ok ho trovato la spiegazione nel sistema di bug reports di PHP.net.... praticamente le stringhe vengono convertite in numeri automaticamente, e una stringa letterale varrà sempre 0. Quindi non è un bug (ma è lo stesso alquanto strano, penso sarebbe dovuto essere il numero a essere convertito in stringa in questo caso).
Ultima modifica di Zorinik : 19-10-2008 alle ore 16.12.07
Più di un bug penso che sia una buona variante semantica per evitare la comparsa di un errore, no?
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
Sì, io me ne sono accorto da un'altra cosa, mysql, ho provato a inserire in un campo int una stringa e mi inseriva zero.
Dato che non è bug php, non è neanche bug mysql, no?
foreach
Codice PHP:
foreach($vettore as $chiave => $valore) {
echo "Ciao";
}
la semantica vuole che se tu provi a sommare un intero con una stringa di caratteri, invece di restituirti un errore ti dice: "senti tu mi hai passato un numero e una stringa di caratteri, io non ti restituisco errore ma per far questo devo convertirla (con un cast implicito) in un intero che non abbia valore (quindi uno zero)"; quindi ti restituisce lo stesso numero,visto che semanticamente non ha senso assegnare un valore ad una stringa di caratteri, quindi è sensato che il controllore di semantica dinamica faccia questo lavoro.
La cosa è assai diversa e sensata nel caso in cui invece di passargli un intero e una stringa di caratteri, gli passassi un intero e una stringa di interi, allora li vi sarebbe un cast "sensato" perchè lui dice: "tu mi hai passato un numero intero e lo vuoi sommare con un numero di tipo stringa, sono formalmente due numeri se ben di tipo diverso, che faccio? bhe li sommo allora!
Questo ovviamente è definito nella grammatica del lingauggio, ogni linguaggio ha la sua grammatica, simile ma non uguale.
Saluti.
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
simili cose accadono perché si usa l'operatore == che rappresenta l'uguaglianza "gentile", ovvero mediata da conversioni automatiche. Esiste anche ===, che è indica l'uguaglianza esatta, per cui due valori sono identici se hanno lo stesso tipo e lo stesso contenuto.