PHPでは、 SetType()関数を使用して、変数を指定されたデータ型に変換します。変数のタイプを変更するだけでなく、変数自体を直接変更します。この記事では、変数をbool値と注意すべきものに変換するときのSetType()の特定のパフォーマンスに焦点を当てます。
setType()の基本的な使用法は次のとおりです。
settype(mixed &$var, string $type): bool
$ varは変換する必要があるタイプの変数であり、関数はこの変数を直接変更します。
$タイプは、 「bool」 、 「int」 、 「string」などのターゲットタイプです。
戻り値は、変換が成功したかどうかを示すブール値です。
setType()が変数をブール値に変換する場合、変換ルールはPHPの組み込みブール変換ルールと一致しています。
「false」値は次のようなfalseに変換されます。
ブール値False
整数値0
フローティングポイント値0.0
空の文字列""とstring "0"
空の配列[]
ヌル
他のすべての値はtrueに変換されます
サンプルコード:
$values = [0, 1, -1, "", "0", "hello", [], [1], null, false, true];
foreach ($values as $val) {
settype($val, "bool");
var_dump($val);
}
出力結果:
bool(false)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)
bool(true)
setType()は、渡された変数を直接変更します。元の値を保持する場合は、最初に変数をコピーする必要があることに注意してください。
$original = "0";
$copy = $original;
settype($copy, "bool");
var_dump($original); // string(1) "0"
var_dump($copy); // bool(false)
オブジェクトまたはリソースが渡された場合、ブール値に変換するときにPHPの通常の変換も続きます。
リソースとオブジェクトは、通常、 nullまたは空のオブジェクトでない限り、 Trueに変換されます。
SetType()はオブジェクトをブール値に直接変換することはできず、結果が予想どおりではない場合があることに注意してください。
SetType()はほとんどの場合に成功しますが、サポートされていない型変換の一部はFalseを返します。
$obj = new stdClass();
$result = settype($obj, "bool"); // 戻る false,変換できません
var_dump($result);
特徴 | 説明します |
---|---|
変更量を直接変更します | setType()は、渡された変数自体を変更します |
PHPルールに従ってブール値を変換します | 特定の値(0、空の文字列、ヌルなど)のみが偽りになり、その他は真です |
複雑なオブジェクトを変換できません | オブジェクトをブール値に直接変換することはできません、変換は失敗し、 falseを返します |
成功した変換ステータスに戻ります | ブール値を返して、変換が成功したかどうかを示します |
これらの動作と制限を理解することは、setType()を使用してブレアンを変換するときに、より正確に可変タイプとプログラムロジックをより正確に制御するのに役立ちます。