PHP-거짓 일 때 부울을 거짓으로 반향하십시오.


172

다음 코드는 아무것도 인쇄하지 않습니다.

$bool_val = (bool)false;
echo $bool_val;

그러나 다음 코드가 인쇄됩니다 1.

$bool_val = (bool)true;
echo $bool_val;

인쇄 할 수있는 더 좋은 방법이 있나요 0이나 false$bool_val이다 false가산보다 if문장은?


5
이것이 디버깅 용인 경우 echo 대신 var_dump를 사용해보십시오.
Mark E. Haase

1
(bool)캐스트는 부울로 캐스팅 부울 할 필요가 없습니다, 중복이다 (bool) true === true.
Jon Surrell

그래서 구성 PHP 수있는 방법이 있나요 echo 0==1;출력 0또는 false?
mario

답변:


250
echo $bool_val ? 'true' : 'false';

또는 거짓 일 때만 출력을 원할 경우 :

echo !$bool_val ? 'false' : '';

85
명백한 이점없이 혼란스럽고 번거롭고 도움이되지 않습니다. 나는 20 년을위한 프로그래밍 봤는데 결코 내가 공백으로 자동 변환하는 ... 널 여러 번 '거짓'을 원했다 없다, 그러나 결코 '거짓'. 내 Java / Spring / Hibernate 개발은 심지어 PHP 시스템보다 훨씬 깨끗하고 강력합니다. 나는 혼란 한 명 .. 충분히 찾을 수 stackoverflow.com/questions/9042002/...을 하지만 실제에 관해서는 언급을 찾을 수 없습니다 이유는 이 디자인 "기능"에 대한합니다.
Thomas W

3
나는 왜 (string) FALSE == ""가 PHP의 문서에서이 비트를 기반으로 좋은 아이디어인지 논쟁하고 싶었습니다. "부울 TRUE 값은 문자열"1 "로 변환됩니다. 부울 FALSE는" "(빈 부울 값과 문자열 값 사이를 전환 할 수 있습니다. " 그러나 나는 그것을 테스트했고, (bool) "0"도 FALSE로 평가되므로, 나는 ... 몰라. 나는 PHP를 좋아하지만 그게 좀 이상하다는 것을 부정 할 수 없다.> _>
Ben

7
이상하지 않습니다 FALSE == ''. 그것은 완벽하게 유효하며 자바 스크립트를 포함한 다른 언어의 일부입니다. 이상한 것은 FALSE가 기본적으로 빈 문자열입니다. 기본값은 0입니다. 항상. 특히 TRUE는 항상 1로 기본 설정되므로 프로그래밍의 기본 규칙을 위반합니다. 코드 일관성을 유지하십시오. 이것은 분명히 버그입니다.
Literphor

1
이 작업을 수행하는 가장 간단한 방법이지만 부울 값이 포함 된 print_r을 통해 배열을 실행하는 경우 이전에 값을 교체하는 루프를 통해 배열을 실행하지 않으면 해당 값이 공백으로 표시되므로 디버그 또는 로그를 시도하는 경우 , 값이 실제로 참인지 거짓인지 또는 공백으로 보이는 것이 있는지 목에 큰 고통이됩니다.
Dave Heq

2
@Ben 은 PHP에서 !! '0'평가 되지만 JS입니다. JS와 PHP에서 거짓입니다. falsetrue!! ""
Charlie

64

이것이 가장 쉬운 방법입니다.

$text = var_export($bool_value,true);
echo $text;

또는

var_export($bool_value)

두 번째 인수가 true가 아닌 경우 결과가 직접 출력됩니다.


34

아니요, 다른 옵션은 Zend 엔진을 수정하는 것이기 때문에 "더 나은 방법"이라고 부르기가 어렵습니다.

편집하다:

정말로 원한다면 배열을 사용할 수 있습니다.

$boolarray = Array(false => 'false', true => 'true');
echo $boolarray[false];

3
배열 키는 부울 유형이 될 수 없기 때문에 이상한 방법입니다. PHP는 그것을 배열 (0 => 'false', 1 => 'true')로 캐스팅합니다.
Mark E. Haase

66
@ mehaase : 오래 전에 PHP의 유형 처리에 대한 모든 종류의 논리를 적용하려고 시도하지 않았습니다. 나는 그것이 오는 그대로 받아들입니다.
Ignacio Vazquez-Abrams

32

이것은 1/0 대신에 부울 값을 그대로 인쇄합니다.

    $bool = false;

    echo json_encode($bool);   //false

1
특히 JSON에서 부울이 정확히 필요한 경우 특히 유용합니다.
bart

1
이것이 가장 좋은 답변입니다
Shady Sherif


21

나는 이것을 인쇄하기를 좋아한다.

var_dump ($var);

15

var_export 원하는 기능을 제공합니다.

이 것 항상 오히려 위해 아무것도 인쇄되지 것보다 값을 출력 null하거나 false. var_export전달 된 인수의 PHP 표현을 인쇄합니다. 출력을 복사 / PHP로 다시 붙여 넣을 수 있습니다.

var_export(true);    // true
var_export(false);   // false
var_export(1);       // 1
var_export(0);       // 0
var_export(null);    // NULL
var_export('true');  // 'true'   <-- note the quotes
var_export('false'); // 'false'

당신이 문자열을 인쇄 할 경우 "true"또는 "false", 당신은 아래와 같이 부울로 캐스팅하지만, 특색 조심 수 있습니다 :

var_export((bool) true);   // true
var_export((bool) false);  // false
var_export((bool) 1);      // true
var_export((bool) 0);      // false
var_export((bool) '');     // false
var_export((bool) 'true'); // true
var_export((bool) null);   // false

// !! CAREFUL WITH CASTING !!
var_export((bool) 'false'); // true
var_export((bool) '0');     // false


4
echo(var_export($var)); 

언제 $var 부울 변수는, true또는 false인쇄 할 수 있습니다.


제 생각에는 JavaScript에서 PHP 변수를 내보낼 때 가장 좋은 해결책입니다!
RPDeshaies

3
약간 오해의 소지가 있습니다. var_export이 경우 var_export가 출력되도록, 그 결과를 반환하고 널 에코 것 true || false, 그리고 echo반향된다 null( ''). 에서 출력을 반환하려면 var_export으로 두 번째 매개 변수를 제공해야합니다 true.
Jon Surrell

PHP 변수를 자바 스크립트로 내보내려면 @RPDeshaies json_encode가 더 좋습니다.
andho


3

%b의 옵션 (sprintf와)의 정수로 부울을 변환합니다 :

echo sprintf("False will print as %b", false); //False will print as 0
echo sprintf("True will print as %b", true); //True will print as 1

익숙하지 않은 경우 :이 함수에 임의의 양의 매개 변수를 줄 수 있지만 첫 번째 매개 변수는 %b또는%s 일반 문자열 교체.

각 패턴은 순서대로 인수로 대체됩니다.

echo sprintf("<h1>%s</h1><p>%s<br/>%s</p>", "Neat Headline", "First Line in the paragraph", "My last words before this demo is over");

2

json_encode는 기본적으로 수행하지만 예쁘지 않습니다 (들여 들여 쓰기 등).

echo json_encode(array('whatever' => TRUE, 'somethingelse' => FALSE));

... 주다 ...

{"whatever":true,"somethingelse":false}

0
function dump_condition($condition){
    if($condition){
        return "true";
    } else {
        return "false";
    }
 }

스크립트에서 사용

echo dump_condition(1>0); // print "true"

echo dump_condition(1<0); // print "false"

0

부울을 부울로 캐스팅하고 정수가 표시되기를 기대합니다. 그것은 효과가 true있지만 거짓이 아닙니다. 정수를 기대하기 때문에 :

echo (int)$bool_val;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.