Как преобразовать строку в boolean ? 
 $string = 'false'; $test_mode_mail = settype($string,'boolean'); var_dump($test_mode_mail); if($test_mode_mail) echo 'test mode is on.'; 
он возвращается,
boolean true
  но он должен быть boolean false . 
  Строки всегда оценивают значение boolean true, если у них нет значения, которое считается «пустым» PHP (взято из документации для empty ): 
"" (пустая строка); "0" (0 в виде строки) Если вам нужно задать логическое значение на основе текстового значения строки, вам нужно будет проверить наличие или иное значение этого значения.
 $test_mode_mail = $string === 'true'? true: false; 
EDIT: приведенный выше код предназначен для ясности понимания. При фактическом использовании следующий код может быть более уместным:
 $test_mode_mail = ($string === 'true'); 
Этот метод был отправлен @lauthiamkok в комментариях. Я отправляю его здесь как ответ, чтобы привлечь к нему больше внимания.
  В зависимости от ваших потребностей вы должны использовать filter_var() с флагом FILTER_VALIDATE_BOOLEAN . 
 filter_var( 'true', FILTER_VALIDATE_BOOLEAN); // true filter_var( 1, FILTER_VALIDATE_BOOLEAN); // true filter_var( '1', FILTER_VALIDATE_BOOLEAN); // true filter_var( 'on', FILTER_VALIDATE_BOOLEAN); // true filter_var( 'yes', FILTER_VALIDATE_BOOLEAN); // true filter_var( 'false', FILTER_VALIDATE_BOOLEAN); // false filter_var( 0, FILTER_VALIDATE_BOOLEAN); // false filter_var( '0', FILTER_VALIDATE_BOOLEAN); // false filter_var( 'off', FILTER_VALIDATE_BOOLEAN); // false filter_var( 'no', FILTER_VALIDATE_BOOLEAN); // false filter_var('asdfasdf', FILTER_VALIDATE_BOOLEAN); // false filter_var( '', FILTER_VALIDATE_BOOLEAN); // false filter_var( null, FILTER_VALIDATE_BOOLEAN); // false 
  Строка "false" на самом деле считается значением "TRUE" помощью PHP.  В документации говорится: 
Чтобы явно преобразовать значение в boolean, используйте (bool) или (boolean) cast. Однако в большинстве случаев приведение не требуется, так как значение будет автоматически преобразовано, если для оператора, функции или структуры управления требуется логический аргумент.
См. Также Тип Жонглирование.
При преобразовании в boolean следующие значения считаются FALSE:
сама логическая ЛОЖЬ
целое число 0 (ноль)
поплавок 0.0 (ноль)
пустая строка и строка «0»,
массив с нулевыми элементами
объект с нулевыми переменными-членами (только для PHP 4)
специальный тип NULL (включая неустановленные переменные)
Объекты SimpleXML, созданные из пустых тегов
Каждое другое значение считается TRUE (включая любой ресурс).
поэтому, если вы это сделаете:
 $bool = (boolean)"False"; 
или
 $test = "false"; $bool = settype($test, 'boolean'); 
  в обоих случаях $bool будет TRUE .  Поэтому вы должны сделать это вручную, как предлагает GordonM. 
При работе с Json мне пришлось отправить логическое значение в $ _POST.
У меня была аналогичная проблема, когда я сделал что-то вроде
  if ($_POST['myVar'] == true) { // do stuff; } 
Так как мой bool был превращен в укус json.
Чтобы преодолеть это, вы можете декодировать строку с помощью json_decode (). 😉
  if( json_decode($_POST['myVar']) == true ) { //do your stuff; } 
(обычно это должно работать с значениями bool, преобразованными в строку и отправленными на сервер также другими способами, кроме использования json)
Пожалуйста, отметьте в качестве ответа, если вы найдете это полезным, спасибо и пожелаете вам много солнца, ciao
вы можете использовать json_decode для декодирования того, что boolean
 $string = 'false'; $boolean = json_decode($string); if($boolean) { // Do something } else { //Do something else } 
 (boolean)json_decode(strtolower($string)) 
  Он обрабатывает все возможные варианты $string 
 'true' => true 'True' => true '1' => true 'false' => false 'False' => false '0' => false 'foo' => false '' => false 
проще всего это сделать:
 $str = 'TRUE'; $boolean = strtolower($str) == 'true' ? true : false; var_dump($boolean); 
Выполняя это так, вы можете выполнить цикл «true», «TRUE», «false» или «FALSE» и получить значение строки в логическом виде.
 function stringToBool($string){ return ( mb_strtoupper( trim( $string)) === mb_strtoupper ("true")) ? TRUE : FALSE; } 
или
 function stringToBool($string) { return filter_var($string, FILTER_VALIDATE_BOOLEAN); } 
Другие ответы более усложняют ситуацию. Этот вопрос – просто логический вопрос. Просто верьте свое утверждение.
 $boolString = 'false'; $result = 'true' === $boolString; 
Теперь ваш ответ будет либо
false , если строка была 'false' , true , если ваша строка была 'true' .   Я должен отметить, что filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );  все равно будет лучшим вариантом, если вам нужно иметь строки, такие как on/yes/1 как псевдоним для true . 
Вы также можете использовать метод settype!
SetType ($ var, "Boolean") Echo $ var // см. 0 или 1
Я делаю это таким образом, чтобы на любой логической строке строка «false» на логическую FALSE выполняла бы регистр без учета регистра, но будет вести себя с использованием обычных правил кастомизации php для всех остальных строк. Я думаю, что это лучший способ предотвратить неожиданное поведение.
 $test_var = 'False'; $test_var = strtolower(trim($test_var)) == 'false' ? FALSE : $test_var; $result = (boolean) $test_var; 
Или как функция:
 function safeBool($test_var){ $test_var = strtolower(trim($test_var)) == 'false' ? FALSE : $test_var; return (boolean) $test_var; } 
  Ответ от @GordonM хорош.  Но это не сработает, если $string уже true (т. Е. Строка не является строкой, а логической TRUE) … что кажется нелогичным. 
Расширяя его ответ, я бы использовал:
 $test_mode_mail = ($string === 'true' OR $string === true)); 
  Если ваша «логическая» переменная поступает из глобального массива, такого как $ _POST и $ _GET, вы можете использовать filter_input() filter. 
Пример для POST:
 $isSleeping = filter_input(INPUT_POST, 'is_sleeping', FILTER_VALIDATE_BOOLEAN); 
  Если ваша «логическая» переменная поступает из другого источника, вы можете использовать filter_var() filter. 
Пример:
 filter_var('true', FILTER_VALIDATE_BOOLEAN); // true 
От php.net
 public function strictBool($val=false){ return is_integer($val)?false:$val == 1; } 
strval сделает это и многое другое.
См. Документы. http://php.net/manual/en/function.strval.php
  $my_istrue = true; echo 'hi '.strval($my_istrue); // returns "hi 1" 
Я запутался в атрибутах shortcode wordpress, я решил написать пользовательскую функцию для обработки всех возможностей. может быть, это полезно для кого-то:
 function stringToBool($str){ if($str === 'true' || $str === 'TRUE' || $str === 'True' || $str === 'on' || $str === 'On' || $str === 'ON'){ $str = true; }else{ $str = false; } return $str; } stringToBool($atts['onOrNot']); 
Простым способом является проверка массива значений, которые вы считаете истинными.
 $wannabebool = "false"; $isTrue = ["true",1,"yes","ok","wahr"]; $bool = in_array(strtolower($wannabebool),$isTrue); 
Вы должны иметь возможность использовать boolean using (bool), но я не уверен, не проверяя, работает ли это в строках «true» и «false».
Это может стоить популярности, хотя
 $myBool = (bool)"False"; if ($myBool) { //do something } 
Стоит знать, что следующее будет оцениваться логическим False при вводе внутри
 if() 
Все остальные будут оцениваться как истинные.
Как описано здесь: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting