Ciao a tutti.
Non riesco a effettuare dei semplicissimi confronti tra i dati estratti da alcune tabelle di MySql. Come spiego meglio nei commenti al codice, in un caso ottengo sempre TRUE, in un altro ottengo risultati discordanti. Ho provato anche con il Type Casting sui dati estratti da MySql, ma il risultato non cambia: dov'è l'errore?

Codice:
Codice PHP:
// preparazione dati
$sezionemadre=0;
$elenco=mysql_query("SELECT ID FROM sezioni WHERE area=0"$connessione);
$sezioniperarea = array();
while((
$row mysql_fetch_array($elenco))) {
$sezioniperarea[] =  (int) $row['ID']; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 0-9
}
foreach (
$sezioniperarea as $ID) {
$datisezioni=mysql_query("SELECT sezione , figli FROM sezioni WHERE ID='$ID'"$connessione);
$buffer=mysql_fetch_array($datisezioni);
$sezione= (int) $buffer["sezione"]; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 0-9
$figli= (boolean) $buffer["figli"]; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 1 o NULL
$tipofigli=gettype($figli);
$tiposezione=gettype($sezionemadre);
$tipoid=gettype($ID);

//ERRORE 1: sempre vero, anche quando $figli è NULL
if ($figli) { //provato pure "$figli==TRUE e ==1", stessi risultati
$checkfigli="- individuati figli";
}

//ERRORE 2: nel quarto caso dà esito TRUE, ma 0 è diverso da 3!
if ($ID===$sezionemadre) {
$checksezione="- sezione corrente";
}

//output
echo 

Figli: 
$figli $tipofigli $checkfigli
 Sezione madre: 
$sezionemadre$tiposezione - ID sezione: $ID$tipoid $checksezione</P>"
Risultato:
Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 1, integer

Figli: boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 2, integer

Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 0, integer - sezione corrente

Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 3, integer - sezione corrente