5

PHP をいじってみると、true が 1 として返され、false が null として返されることがわかりました。

echo (5 == 5) // displays 1
echo (5 == 4) // displays nothing

true または false を返す関数を作成する場合、それらを使用するためのベスト プラクティスは何ですか?

例えば、

function IsValidInput($input) {
  if ($input...) {
    return true;
  }
  else {
    return false;
  }
}

これは関数を使用する最良の方法ですか?

if (IsValidInput($input)) {
  ...
}

反対の関数をどのように記述しますか?

IsBadInput($input) {
  return ! IsValidInput($input);
}

どのようなときに演算子を使用し===ますか?

4

5 に答える 5

4

PHP をいじってみると、true が 1 として返され、false が null として返されることがわかりました。

それは真実ではありません (しゃれは意図されていません)。PHP には、他の多くの言語と同様に、「真」と「偽」の値があり、他の値と同様にTRUE、またはFALSE他の値と比較した場合に動作します。

これは、PHP が弱い型付け (対強い型付け) を使用しているためです。異なるタイプの値を比較するときに自動的に変換されるため、最終的に同じタイプの 2 つの値を比較できます。echo TRUE;PHP では、echo常に文字列を出力します。しかし、ブール値を渡しましたecho。これは、その仕事をする前に文字列に変換する必要があります。SoTRUEは自動的に文字列に変換され"1"、 whileFALSEは に変換され""ます。

=== 演算子はいつ使用しますか?

PHP が 2 つの等号演算子=====. ===比較している両方の値が単に「等しい」(または同等) だけでなく、同じ型であることを確認する場合に使用します。実際には:

echo 1 == TRUE; // echoes "1", because the number 1 is a truthy value
echo 1 === TRUE; // echoes "", because 1 and TRUE are not the same type (integer and boolean)

true または false を返す関数を作成する場合、それらを使用するためのベスト プラクティスは何ですか?

できる限り正確に、実際のブール値TRUEまたはを返しますFALSEis典型的なケースは、 のように で始まる関数isValidInputです。TRUE通常、そのような関数は または のいずれかを返すと予想されますFALSE

一方、場合によっては、関数が「偽の」または「真実の」値を返すと便利です。たとえばstrpos、ゼロの位置に部分文字列が見つかった場合は0(int) を返しますが、文字列が見つからない場合はFALSE(bool) を返します。そう:

$text = "The book is on the table";
echo (strpos($text, "The") == FALSE) ? "Not found" : "Found"; // echoes "Not found"
echo (strpos($text, "The") === FALSE) ? "Not found" : "Found"; // echoes "Found"
于 2012-03-10T01:26:58.860 に答える
2
function isValidInput($input){
    return ($input ...);   // if your test returns true/false, just return that result
}

最後の例には引数がありません。それ以外の場合は問題ありません。

function isBadInput($input){
    return !isValidInput($input);
}
于 2012-03-10T01:21:58.307 に答える
1
  1. もちろん。while ループなど、別の種類の構造で必要な場合を除きます。

  2. あなたは決してそうしません。常に通常の関数を直接反転します。

  3. 、などとfalse区別する必要がある場合。0''

于 2012-03-10T01:20:38.330 に答える
1

PHP をいじってみると、true が 1 として返され、false が null として返されることがわかりました。

いいえ.. trueandは、ブール値の andfalseとして返されます。出力をエコーするときは、表示のために文字列にキャストする必要があります。マニュアルに従ってtruefalse

ブールTRUE値は文字列に変換されます"1"。Booleanは(空の文字列) にFALSE変換されます。""これにより、ブール値と文字列値の間の相互変換が可能になります。

残りについては、それで問題ありません。正確な型の一致が必要な場合は、比較での型のジャグリングを避けるためです。たとえば"1" == true、true です"1" === trueが false です。

于 2012-03-10T01:24:02.753 に答える
0
function isValidInput($input) {
  return ($input...);
}

if(isValidInput($input))
  ...

if(!isValidInput($input)) // never rewrite inverse functions
  ...

if(isValidInput($input) === false) {
  // Only run if the function returned a boolean value `false`
  // Does the same thing as above, but with strict typing.
}
于 2012-03-10T01:26:06.107 に答える