문자열을 부울 PHP로 변환하는 방법


Answers

이 방법은 @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
Question

문자열을 boolean 로 변환하려면 어떻게해야합니까?

$string = 'false';

$test_mode_mail = settype($string,'boolean');

var_dump($test_mode_mail);

if($test_mode_mail) echo 'test mode is on.';

그것은,

부울 true

boolean false 여야합니다.




간단한 방법은 사실이라고 생각하는 값의 배열을 검사하는 것입니다.

$wannabebool = "false";
$isTrue = ["true",1,"yes","ok","wahr"];
$bool = in_array(strtolower($wannabebool),$isTrue);



@GordonM 의 대답은 좋습니다. 그러나 $string 이 이미 true (즉, 문자열이 문자열이 아니라 TRUE 인 경우) 실패합니다 ... 이것은 비합리적입니다.

그의 대답을 확장, 내가 사용 줄 :

$test_mode_mail = ($string === 'true' OR $string === true));



settype 메소드도 사용할 수 있습니다!

SetType ($ var, "Boolean") Echo $ var // 0 또는 1 참조




다른 대답은 복잡한 것을 넘어서고 있습니다. 이 질문은 단순히 논리적인 질문입니다. 귀하의 진술을 바로 받으십시오.

$boolString = 'false';
$result = 'true' === $boolString;

이제 당신의 대답은

  • false , 캐릭터 라인이 'false' ,
  • 또는 당신의 끈이 'true' .

나는주의해야한다 filter_var( $boolString, FILTER_VALIDATE_BOOLEAN ); on/yes/1 과 같은 문자열을 true 별칭으로 사용해야하는 경우에도 더 나은 옵션 true .







JSON으로 작업 할 때 $_POST 를 통해 부울 값을 보내야했습니다. 나는 비슷한 일을했을 때 비슷한 문제를 겪었다.

if ($_POST['myVar'] == true) {
    // do stuff;
}

위의 코드에서 my Boolean은 JSON 문자열로 변환되었습니다.

이를 극복하기 위해 json_decode() 사용하여 문자열을 디코딩 할 수 있습니다.

if( json_decode($_POST['myVar']) == true ) { //do your stuff; }

(이것은 보통 부울 값을 문자열로 변환하여 JSON을 사용하는 것 이외의 방법으로 서버에 보내야합니다.)




(boolean)json_decode(strtolower($string))

$string 가능한 모든 변종을 처리 $string

'true'  => true
'True'  => true
'1'     => true
'false' => false
'False' => false
'0'     => false
'foo'   => false
''      => false



Links