Odpowiadając na pierwszy post, skoro używasz json_encode, to przy
[php]$foo = ['a'=>1, 'b'=>true, 'c'=>false, 'd' => new stdClass, 'e'=>'stop'];
$json = json_encode($foo);
print($json);
var_dump(json_decode($json, true));/php]
to wynikiem są:
Kod
{"a":1,"b":true,"c":false,"d":{},"e":"stop"}
array(5) {
["a"]=>
int(1)
["b"]=>
bool(true)
["c"]=>
bool(false)
["d"]=>
array(0) {
}
["e"]=>
string(4) "stop"
}
klucz o wartości b i c podają wartości bool, a nie string.
Do sprawdzenia wartości przychodzących z _POST lub _GET lepiej użyć: filter_var($foo['b'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
Szczególnie, że rozpatruje także pozytywnie wartości 'on', '1' jako true, a czasem przy wysyłaniu do skryptu wartości przez JS mogą być wysłane właśnie takie wartości dla prawdy lub fałszy np. z formularza radio lub checkbox.