Corso php

Operatori di confronto

Gli operatori di confronto sono spesso un aspetto trascurato di PHP, il che può portare a molti risultati inaspettati. Uno di questi problemi deriva dai conforonti stretti (i confronti di valori booleani come se fossero interi).

<?php
$a = 5;   // 5 come intero

var_dump($a == 5);       // confronta il valore; restituisce vero
var_dump($a == '5');     // confronta il valore (ignora il tipo); restituisce vero
var_dump($a === 5);      // confronta tipo/valore (intero e intero); restituisce vero
var_dump($a === '5');    // confronta tipo/valore (intero e intero); restituisce falso

/**
 * Confronti stretti
 */
if (strpos('testing', 'test')) {    // 'test' è trovato alla posizione 0, che è interpretato come il booleano falso
    // codice...
}

// contro

if (strpos('testing', 'test') !== false) {    // vero, perché è stato fatto un confronto stretto (0 !== false)
    // codice...
}