web-dev-qa-db-ja.com

ブール値を整数値に変換するphp

PHPにブール値を取り、それに相当する整数を返す組み込み関数はありますか?FALSEの場合は0、TRUEの場合は1?もちろん、そうするための関数を簡単に作成できます。 m PHPの内部に組み込み関数があるかどうかを尋ねるだけで、私はすでにintval()を試し、(int)しかし動作しませんでした。TRUEとFALSEの両方の場合に0を返します。

編集:問題は、それが実際にブール値ではなく、文字列「false」、「true」であったということでした。phpはブール値を渡したjqueryポストを検出しませんでした。問題解決、ありがとう!

37
user2990361

http://www.php.net/manual/en/language.types.integer.php

通常、単に$myInt = (int)$myBooleanが機能するはずですが、それ以外の場合はコードを見せていただけますか?

64

次のように変数の前に「+」を追加するだけです。

$myBool = true; 

var_dump(+$myBool);

ouputs: int(1);
16
Dawa

JSON I.E.から値を取得している場合AJAX POSTを使用すると、値は文字列として入ります(ご存じのとおり)。これを回避する方法は、true/false文字列を比較し、boolをintにキャストすることです。

$requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'

$myInt = (int)($requestBool === 'true');
echo $myInt;

//returns: 0 or 1
4
Sam Boyne

データ型が不明な場合は、以下の例を参照してください。文字列、整数、ブール値で機能します。

<?php

$options = [ TRUE, FALSE, 'true', 'false', 1, 0, '1', '0', 'on', 'off', 'yes', 'no' ];

foreach ( $options as $option ) {
    $bool = filter_var( $option, FILTER_VALIDATE_BOOLEAN ); // TRUE or FALSE
    print (int) $bool . ' '; // 1 or 0
} 
// Outputs: 1 0 1 0 1 0 1 0 1 0 1 0 

?>

filter_var($ var、FILTER_VALIDATE_BOOLEAN)はbool(true)またはbool(false)を返し、単純に整数としてキャストします。

filter_var()

(PHP 5> = 5.2.0、PHP 7)

filter_var —指定されたフィルターで変数をフィルターする

4
Nathan Duckett
echo (int)true;
echo '<br>';
echo (int)false;
echo '<br>';
echo intval(true);
echo '<br>';
echo intval(false);
echo '<br>';
echo true + true;
0
Samuel Cook

一度に複数のキャストを実行できます。

$isTest = 'true';

(int)(bool)$isTest

echo $isTest; // this outputs 1
0
user1976610