PHPにブール値を取り、それに相当する整数を返す組み込み関数はありますか?FALSEの場合は0、TRUEの場合は1?もちろん、そうするための関数を簡単に作成できます。 m PHPの内部に組み込み関数があるかどうかを尋ねるだけで、私はすでにintval()
を試し、(int)
しかし動作しませんでした。TRUEとFALSEの両方の場合に0を返します。
編集:問題は、それが実際にブール値ではなく、文字列「false」、「true」であったということでした。phpはブール値を渡したjqueryポストを検出しませんでした。問題解決、ありがとう!
http://www.php.net/manual/en/language.types.integer.php
通常、単に$myInt = (int)$myBoolean
が機能するはずですが、それ以外の場合はコードを見せていただけますか?
次のように変数の前に「+」を追加するだけです。
$myBool = true;
var_dump(+$myBool);
ouputs: int(1);
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
データ型が不明な場合は、以下の例を参照してください。文字列、整数、ブール値で機能します。
<?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)を返し、単純に整数としてキャストします。
(PHP 5> = 5.2.0、PHP 7)
filter_var —指定されたフィルターで変数をフィルターする
echo (int)true;
echo '<br>';
echo (int)false;
echo '<br>';
echo intval(true);
echo '<br>';
echo intval(false);
echo '<br>';
echo true + true;
一度に複数のキャストを実行できます。
$isTest = 'true';
(int)(bool)$isTest
echo $isTest; // this outputs 1