0

我发现有多种方法可以检查函数是否正确地将值返回给变量,例如:

例一

$somevariable = '';

$somevariable = get_somevariable();

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

例二

$somevariable = '';

$somevariable = get_somevariable();

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

我的问题:检查变量是否正确的最佳做法是什么?不同类型的对象会有所不同吗?例如,如果您期望 $somevariable 是一个数字,是否会检查它是否是一个空字符串帮助/发布问题?你要设置什么 $somevariable = 0; 作为它的初始值?

我来自 C# 的强类型世界,所以我仍在努力解决所有这些问题。

威廉

4

4 回答 4

1

这取决于您的函数可能返回什么。这可以追溯到如何最好地构造函数。您应该学习一次 PHP 真值表并应用它们。以下所有事情都被认为是虚假的:

  • ''(空字符串)
  • 0
  • 0.0
  • '0'
  • null
  • false
  • array()(空数组)

其他一切都是真实的。如果您的函数将上述之一作为“失败”返回代码返回,而其他任何内容作为成功返回,则最惯用的检查是:

if (!$value)

如果函数可能同时返回0and false(例如strpos确实如此),则需要应用更严格的检查:

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

我总是选择最短、最易读且不易误报的版本,通常是if ($var)/ if (!$var)

于 2013-03-28T16:08:37.573 回答
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

没有明确的答案,因为它取决于函数应该返回的内容,如果有适当的记录。

例如,如果函数因返回 null 而失败,您可以使用if (!is_null($retval)).

如果函数因返回 FALSE 而失败,请使用if ($retval !== FALSE).

如果函数因未返回整数值而失败,if (is_int($retval)).

如果函数因返回空字符串而失败,您可以使用if (!empty($retval)).

等等...

于 2013-03-28T16:03:56.397 回答
0

如果要检查是否是数字,则应使用过滤器功能

例如:

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