PHP - 检查if语句中的返回值
我已经看到编程实践中可以从函数返回字符串或布尔值。在这种情况下,是否建议在if循环中检查empty()和isset(),或者只是进行检查,如($ returnvar)是否工作。PHP - 检查if语句中的返回值
这是我正在玩的一段代码。你认为应该是输出,并且检查条件是否正确?
感谢,
<?php
function testMe()
{
try
{
$returnText = 'John King Rocks';
return $returnText;
}
catch (Exception $e)
{
return false;
}
}
$str = testMe();
if ($str)
{
echo $str;
}
?>
此代码,就可以(为$str
这个具体的例子),但在PHP检查布尔是有风险的,如你所说的,应该谨慎进行,我会建议(一般),以检查它,如下所示:
if ($str !== false)
{
echo $str;
}
会发生什么事是$str
会type casted to a boolean。因此,该字符串将计算为false
当它是:
- 空字符串
- 字符串“0”
所有其它值都被认为是true
,这可能不是你想要的行为。所以,回答你的问题:
你认为应该是输出?
好了,返回的字符串不匹配或者两个条件,所以if
声明将评估为true
和$str
将echo()
“d。 (更不用说上面的代码永远不会产生一个异常)。
检查是否正确的if?
这取决于您正在寻找的功能。如果要考虑所有字符串(包括“”和“0”)是否有效,并且仅当函数返回false
时跳过echo()
,则应检查返回值是否与!== false
相等。否则,如果上述两个条件可接受为false
,则应该没问题。
if
不是一个循环。这是一个有条件的。 echo false
将被强制为echo '0'
,所以if
检查只有在您不想打印零时才需要。但是,echo null
将不会打印任何内容。更好的办法是返回空字符串。你应该避免混合返回类型。许多其他语言甚至不允许它。
顺便说一下,您的异常处理什么都不做。try
的内容不能抛出异常。吞吐异常也很糟糕,您需要e
之前的$
。
在回答你的问题时,有一句话是“偏执编程是专业编程。“也就是说,如果您希望应用程序始终如一地运行(在此情况下if
检查很好),则应该尽可能多地执行检查,但了解您正在使用的方法和预期结果也很重要。如果testMe
为false,或者你想不打印任何东西,你想要其他的处理吗?或者你想不打印任何东西?
请注意,'返回false;'这里是无法访问的 - 'try'块中的任何内容都不会导致异常 – cHao 2012-08-09 17:46:51
true ..但它只是一个例子,因为代码到达那里.. – Jake 2012-08-09 17:49:06
empty()可能炸毁你 - 它认为''0'是空的,除非你确切地知道你将要做什么,否则不要使用它 – 2012-08-09 17:50:12