我发现有多种方法可以检查函数是否正确地将值返回给变量,例如:
$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#世界,所以我仍然试图绕过这一切。
威廉
答案 0 :(得分: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
答案 1 :(得分:1)
没有明确的答案,因为它取决于函数应该返回的内容,如果记录正确的话。
例如,如果函数因返回null而失败,则可以使用if (!is_null($retval))
进行检查。
如果函数因返回FALSE而失败,请使用if ($retval !== FALSE)
。
如果函数因未返回整数值if (is_int($retval))
。
如果函数因返回空字符串而失败,则可以使用if (!empty($retval))
。
依旧......
答案 2 :(得分:1)
这取决于你的功能可能会返回什么。这种情况可以追溯到如何最好地构建功能。您应该学习一次PHP真值表并应用它们。以下所有内容都被视为 falsey :
''
(空字符串)0
0.0
'0'
null
false
array()
(空数组)其他一切都是 truthy 。如果您的函数返回上述“失败”返回代码之一以及其他任何成功,则最惯用的检查是:
if (!$value)
如果该功能可能同时返回0
和false
(例如strpos
),则需要应用更严格的检查:
if (strpos('foo', 'bar') !== false)
我总是使用最短,最易读的版本,不容易出现误报,通常为if ($var)
/ if (!$var)
。
答案 3 :(得分:0)
如果您想检查是否是数字,您应该使用filter functions。
例如:
if (!filter_var($_GET['num'], FILTER_VALIDATE_INT)){
//not a number
}