programing

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

randomtip 2022. 12. 21. 22:52
반응형

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

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

$string = 'false';

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

var_dump($test_mode_mail);

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

다시 돌아온다.

부울 참

하지만 그래야 한다.boolean false.

이 방법은 @lauthiamkok에 의해 댓글에 게시되었습니다.더 많은 관심을 끌기 위해 여기에 글을 올립니다.

니즈에 따라서는,filter_var()와 함께FILTER_VALIDATE_BOOLEAN플래그를 설정합니다.

filter_var(    true, FILTER_VALIDATE_BOOLEAN); // true
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(   '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

문자열은 PHP에 의해 "빈" 것으로 간주되는 값이 없는 한 항상 부울 true로 평가됩니다(의 설명서에서 참조).

  1. ""(빈 문자열)
  2. "0"(문자열로서 0)

문자열의 텍스트 값을 기반으로 부울을 설정해야 하는 경우 해당 값의 존재 여부를 확인해야 합니다.

$test_mode_mail = $string === 'true'? true: false;

편집: 위의 코드는 이해하기 위한 것입니다.실제 사용 시에는 다음 코드가 더 적절할 수 있습니다.

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

또는 를 사용할 수도 있습니다.filter_var함수는 더 많은 부울 값을 포함할 수 있습니다.

filter_var($string, FILTER_VALIDATE_BOOLEAN);

filter_vartruthy 값을 포함한 모든 범위의 값을 망라합니다."true","1","yes"그리고."on"자세한 내용은 여기를 참조해 주세요.

스트링"false"실제로 고려되고 있다"TRUE"값을 지정합니다.문서에는 다음과 같이 기재되어 있습니다.

값을 부울로 명시적으로 변환하려면 (부울) 또는 (부울) 캐스트를 사용합니다.그러나 연산자, 함수 또는 제어 구조가 부울 인수를 필요로 하는 경우 값이 자동으로 변환되기 때문에 대부분의 경우 캐스트는 불필요합니다.

'타입 저글링'을 참조하십시오.

부울로 변환할 경우 다음 값은 FALSE로 간주됩니다.

  • 부울 FALSE 자체

  • 정수 0(제로)

  • 플로트 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;
}

위의 코드에서는 부울이 JSON 문자열로 변환되었습니다.

이 문제를 해결하려면 , 다음의 방법으로 문자열을 디코딩 할 수 있습니다.json_decode():

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

(이것은 통상 문자열로 변환되어 JSON 이외의 방법으로 서버에 송신되는 부울값과 함께 동작합니다).

json_boole을 사용하여 부울을 디코딩할 수 있습니다.

$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

가 $ 및 $_GET 배열에서 온 부울 _POST " $_GET "을 사용할 수 .filter_input()필터 기능.

POST의 예:

$isSleeping  = filter_input(INPUT_POST, 'is_sleeping',  FILTER_VALIDATE_BOOLEAN);

에서 온 "부울" 변수를 사용할 수 .filter_var()필터 기능.

예:

filter_var('true', FILTER_VALIDATE_BOOLEAN); // true

가장 쉬운 방법은 다음과 같습니다.

$str = 'TRUE';

$boolean = strtolower($str) == 'true' ? true : false;

var_dump($boolean);

이렇게 하면 일련의 'TRUE', 'TRUE', 'FALSE'를 루프하여 문자열 값을 부울로 가져올 수 있습니다.

filter_var($string, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);

$string = 1; // true
$string ='1'; // true
$string = 'true'; // true
$string = 'trUe'; // true
$string = 'TRUE'; // true
$string = 0; // false
$string = '0'; // false
$string = 'false'; // false
$string = 'False'; // false
$string = 'FALSE'; // false
$string = 'sgffgfdg'; // null

다음을 지정해야 합니다.

FILTER_NULL_ON_FAILURE
otherwise you'll get always false even if $string contains something else.

다른 대답들은 복잡한 것들 위에 있다.이 질문은 단순히 논리적인 질문이다.진술이나 제대로 해

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

이제 당신의 대답은

  • false이 '다'인'false',
  • ★★★★★★★★★★★★★★★★★」true이 " " "인 경우'true'.

하지 안 된다filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );더 나은 선택지가 될 수 있습니다. 만약 당신이 다음과 같은 조건들을 가지고 있어야 한다면요.on/yes/1true.

function stringToBool($string){
    return ( mb_strtoupper( trim( $string)) === mb_strtoupper ("true")) ? TRUE : FALSE;
}

또는

function stringToBool($string) {
    return filter_var($string, FILTER_VALIDATE_BOOLEAN);
}

문자열 "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입니다 (, 부울 TRUE)...비논리적으로 보이는데요

그의 대답을 연장하면, 나는 다음과 같이 말할 것이다.

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

워드프레스 쇼트코드 속성에 혼란이 생겨 커스텀 함수를 작성하여 모든 가능성을 처리하기로 했습니다.누군가에게 도움이 될지도 몰라

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']);
$string = 'false';

$test_mode_mail = $string === 'false' ? false : true;

var_dump($test_mode_mail);

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

수작업으로 해야 합니다.

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

$string = 'false';
$boolean = settype($string,"boolean");
var_dump($boolean); //see 0 or 1

간단한 방법은 true라고 생각되는 값의 배열과 대조하는 것입니다.

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

편집하여 동작하고 있는 솔루션을 표시하다preg_match();true를 포함하는 합니다.이것은 다른 답변에 비해 무거울 수 있지만 어떤 문자열도 부울 요구에 맞게 쉽게 조정할 수 있습니다.

$test_mode_mail = 'false';      
$test_mode_mail = 'true'; 
$test_mode_mail = 'true is not just a perception.';

$test_mode_mail = gettype($test_mode_mail) !== 'boolean' ? (preg_match("/true/i", $test_mode_mail) === 1 ? true:false):$test_mode_mail;

echo ($test_mode_mail === true ? 'true':'false')." ".gettype($test_mode_mail)." ".$test_mode_mail."<br>"; 

(bool)을 사용하여 부울에 캐스트할 수 있지만 "true" 및 "false" 문자열에서 이 문자열이 작동하는지 확인하지 않고는 확신할 수 없습니다.

이거 한 잔 마실 가치가 있을 것 같은데

$myBool = (bool)"False"; 

if ($myBool) {
    //do something
}

안에 넣으면 다음 부울이 False로 평가된다는 것을 알 필요가 있습니다.

if()
  • 부울 FALSE 자체
  • 정수 0(제로)
  • 플로트 0.0 (제로)
  • 빈 문자열과 문자열 "0"
  • 원소가 0인 배열
  • 멤버 변수가 제로인 오브젝트(PHP 4 한정)
  • 특수 유형 NULL(설정되지 않은 변수 포함)
  • 빈 태그에서 생성된 SimpleXML 개체

다른 모든 것들은 사실로 평가될 것이다.

여기에 기재된 바와 같이 http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

언급URL : https://stackoverflow.com/questions/7336861/how-to-convert-string-to-boolean-php

반응형