Ho appena ridotto un bug insensato a cosa c'è nel titolo di questa domanda. Sono sicuro che c'è una spiegazione perfettamente ragionevole per il motivo per cui Php pensa che 0 == '%' (o qualsiasi altro carattere speciale, penso). Ho pensato che sarebbe stato bello avere questa spiegazione su StackOverflow!if (0 == '%') echo "WTF, Php, perché non puoi confrontare le cose in modo sano?"
risposta
Utilizzo '===' (per un confronto esatto e letterale - i valori devono essere dello stesso tipo e uguali) invece di '==' risolve questo problema Con '==' sta provando a lanciare '%' su un numero e 0 è il meglio che può fare.
Se si utilizza ===, fare attenzione a $ x = '0'; var_dump ($ x === 0) dà false ($ x è una stringa, 0 è un numero intero :) :) –
poiche '%' non è vero, dovrebbe essere falso (0), così naturalmente 0 == '%'
;-) strano però
Non converte string in bool, un altro operando è intero e non bool. –
Si farà lo stesso per qualsiasi stringa, convertendo una stringa non numerica in numero intero restituisce sempre 0.
Questo è il motivo per cui (insieme a molte altre cose pazzesche) PHP non dovrebbe nemmeno essere considerato un vero "linguaggio di programmazione". – slashCoder
Nel caso in cui un operatore di confronto rigoroso non sia direttamente adatto, se si desidera confrontare entrambi i valori come stringhe, è possibile utilizzare strcmp(). Un esempio potrebbe essere dove entrambi i valori sono variabili e i tipi potrebbero essere sia string, sia int. Invece di digitare il cast nella stringa e quindi utilizzare il controllo di uguaglianza rigorosa, strcmp() può essere meno dettagliato.
La coercizione del tipo di php è molto comoda. Ma se non comprendi le sue numerose regole (alcune possono mordere), dovresti cercare di evitare di usarlo. Vedere http://www.php.net/manual/en/types.comparisons.php
- 1. Puoi inserire PHP in PHP con echo?
- 2. Il modo migliore per confrontare con 0 in PHP?
- 3. Perché "$ temp = 0; echo ~ $ temp; "stampa -1?
- 4. Come dividere Diazo governa in modo sano?
- 5. In PHP, perché non è stato implementato echo come funzione? (non echo vs. printf)
- 6. php statica in if
- 7. Puoi aggiungere stringhe alle variabili in PHP?
- 8. Echo PHP dentro Javascript?
- 9. Confondere if in php
- 10. Come confrontare due date in php
- 11. If (Array.Length == 0)
- 12. PHP var vuoto == 0?
- 13. Disabilitare l'eliminazione "if (0)" in gcc
- 14. Perché le variabili non possono essere dichiarate in un'istruzione if?
- 15. Echo an $ _POST in PHP
- 16. PHP - Istruzioni IF annidate
- 17. Come echo JSON in PHP
- 18. php: echo "", print(), printf()
- 19. php stenografia if {} ELSE IF {} else {}
- 20. Come utilizzare le virgolette nella funzione echo in PHP?
- 21. Cosa restituiscono le chiusure PHP nelle istruzioni IF?
- 22. Puoi avere una logica if-then-else in SQL?
- 23. Espressione regolare per confrontare gli interi non negativi in PHP?
- 24. Come dovrei nominare un tipo "ombrellone" in modo sano?
- 25. Echo non fa nulla
- 26. PHP Echo text Colore
- 27. Perché non arricciare le mie intestazioni in PHP?
- 28. Perché una stringa che contiene '\ 0' e '\ t' non può usare l'operatore == per confrontare con "\ 0 \ t"?
- 29. confrontare due stringhe in PHP e mostrano differenze di carattere
- 30. Fare in modo che PHPUnit ignori le cose?
http://stackoverflow.com/questions/875854/how-best-to-compare-to-0-in-php –
Questo è il motivo per cui scrivo PHP più o meno allo stesso modo in cui scrivo C++. ;) – Teekin