Strings always evaluate to boolean true unless they have a value that's considered "empty" by PHP (taken from the documentation for
""(an empty string);
"0"(0 as a string)
If you need to set a boolean based on the text value of a string, then you'll need to check for the presence or otherwise of that value.
$test_mode_mail = $string === 'true'? true: false;
EDIT: the above code is intended for clarity of understanding. In actual use the following code may be more appropriate:
$test_mode_mail = ($string === 'true');
or maybe use of the
filter_var function may cover more boolean values:
filter_var covers a whole range of values, including the truthy values
"on". See here for more details.