我试着用booval和is_bool判断都不行:

boolval("false") //true
is_bool("false") //true

好像PHP认为所有的非空字符串都是true

php中字符串只有下面两种情况转化为bool类型时认为是false,其余均为true

echo boolval("") ; //false
echo boolval("0"); //false

你的情况可以用===来解决:

$val = $string === 'true'? true: false;
//或者更简单的方法
$test_mode_mail = ($string === 'true');