0

関数が変数に値を正しく返したかどうかを確認するには、複数の方法があることがわかりました。次に例を示します。

例 I

$somevariable = '';

$somevariable = get_somevariable();

if ($somevariable)
{
    // Do something because $somevariable is definitely not null or empty!
}

例 II

$somevariable = '';

$somevariable = get_somevariable();

if ($somevariable <> '')
{
    // Do something because $somevariable is definitely not null or empty!
}

私の質問: 変数が正しいかどうかを確認するためのベスト プラクティスは何ですか? オブジェクトの種類ごとに異なる可能性がありますか? たとえば、$somevariable が数値であると予想している場合、それが空の文字列であるかどうかを確認すると、ヘルプ/投稿の問題が発生しますか? $somevariable = 0; を設定するとは何ですか。その初期値として?

私は C# の厳密に型指定された世界から来たので、まだこのすべてに頭を悩ませようとしています。

ウィリアム

4

4 に答える 4

1

適切に文書化されている場合、関数が返すものに依存するため、明確な答えはありません。

たとえば、関数が null を返して失敗した場合は、 を使用して確認できますif (!is_null($retval))

関数が FALSE を返して失敗した場合は、 を使用しますif ($retval !== FALSE)

関数が整数値を返さないために失敗した場合、if (is_int($retval)).

空の文字列を返すことによって関数が失敗した場合は、 を使用できますif (!empty($retval))

等々...

于 2013-03-28T16:03:56.397 に答える
1

それはあなたが探しているものに依存します。

変数が設定されていることを確認します。

if (isset($var))
{
 echo "Var is set";
} 

番号の確認:

if (is_int($var))
{
 echo "Var is a number"; 
}

文字列の確認:

if (is_string($var))
{
 echo "var is a string";
}

var に小数点以下の桁数が含まれているかどうかを確認します。

if (is_float($var))
{
 echo "Var is float";
}

変数が特定の型ではないことを確認したい場合は!、感嘆符を追加します。例:

if (!isset($var)) // If variable is not set
{
  echo "Var Is Not Set"; 
}

参考文献:

http://www.php.net/manual/en/function.is-int.php

http://www.php.net/manual/en/function.is-string.php

http://www.php.net/manual/en/function.is-float.php

http://www.php.net/manual/en/function.isset.php

于 2013-03-28T16:01:08.587 に答える
1

関数が何を返すかによって異なります。この種のことは、関数を最適に構築する方法に戻ります。PHP の真理値表を一度学習し、適用する必要があります。次のすべてが虚偽と見なされます

  • ''(空文字列)
  • 0
  • 0.0
  • '0'
  • null
  • false
  • array()(空の配列)

他のすべては真実です。関数が上記のいずれかを「失敗」のリターン コードとして返し、それ以外を成功として返す場合、最も慣用的なチェックは次のとおりです。

if (!$value)

関数が and の両方0を返す可能性がある場合false(strposたとえば、同様に)、より厳密なチェックを適用する必要があります。

if (strpos('foo', 'bar') !== false)

私は常に、誤検知が発生しにくい最短で最も読みやすいバージョンを使用します。これは通常if ($var)/if (!$var)です。

于 2013-03-28T16:08:37.573 に答える
0

が数値かどうかを確認したい場合は、フィルター関数を使用する必要があります。

例えば:

if (!filter_var($_GET['num'], FILTER_VALIDATE_INT)){
    //not a number
}
于 2013-03-28T16:00:07.403 に答える