<p>我试着用booval和is_bool判断都不行:</p> <pre class="highlight" data-highlight="highlight" data-lang="php"><code class="php">boolval("false") //true is_bool("false") //true</code></pre> <p>好像PHP认为所有的非空字符串都是true</p>

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

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

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

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