Da quello che so di PHP, la seguente sintassi è non legale:PHP senza citazioni
if ($s == Yes)
Dovrebbe invece essere scritto come:
if ($s == 'Yes')
Tuttavia, la prima esempio sta funzionando bene. Qualcuno sa perché?
Da quello che so di PHP, la seguente sintassi è non legale:PHP senza citazioni
if ($s == Yes)
Dovrebbe invece essere scritto come:
if ($s == 'Yes')
Tuttavia, la prima esempio sta funzionando bene. Qualcuno sa perché?
Ordinariamente, sarebbe interpretato come una costante, ma se PHP non riesce a trovare una costante con quel nome, allora assume che sia una stringa letterale nonostante la mancanza di virgolette. Questo genererà un messaggio E_NOTICE (che potrebbe non essere visibile, a seconda del livello di segnalazione degli errori); qualcosa di simile:
Avviso: l'uso di indefinito costante Sì - ha assunto 'Sì' in script.php on line 3
In sostanza, PHP è solo eccessivamente indulgente.
In breve, PHP si comporta come se le virgolette fossero presenti.
Se PHP non riconosce qualcosa come token riservato, lo considera come una stringa letterale.
Il registro degli errori mostrerà un avviso a riguardo.
Il primo non è una stringa.
E non è funziona bene:
error_reporting(E_ALL);
if ($s == Yes) {}
E 'un retaggio dei tempi in cui PHP eri solo un "Pretty home page" modulo interprete e fortemente sconsigliato al giorno d'oggi.
In PHP, Sì sarebbe considerato come una costante. Se la costante non è definita, assumerai che tu intenda la stringa "Sì". Dovrebbe generare una notifica se li hai attivati.
È necessario avere sia error_reporting che mostrano le notifiche che display_errors sono attivate.
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', '1');
if ($s == Yes) {
// foo
}
PHP converte Sì in "Sì" internamente quando viene rilevato un Sì costante non definito.
Btw .. Se quello che vuoi è confrontare se $ s ha "Sì" come valore di una è una stringa allora dovete
a) utilizzano strcmp o b) utilizzano l'operatore identità "=== "
Sviluppa sempre PHP con TUTTI i messaggi di errore su. Tutte le notifiche invisibili rallentano la tua applicazione e la rendono inutilizzabile per gli altri che non hanno disattivato la segnalazione degli errori. –