在PHP中正确解析函数的return语句

时间:2013-04-04 15:30:57

标签: php if-statement user-defined-functions

我有一个可以返回true的函数;返回'空'; return'only_site';并返回'only_user';

所以有4种可能的回报。在这个声明中:

if(parse_ratings($user_rating, $st_rating, $rating_id) === 'empty') 
{
     $errors[] = 'Neither user_rating, nor site_rating cpule be spidered.'; 
}

     elseif(parse_ratings($user_rating, $st_rating, $rating_id) === 'only_site')           
         $errors[] = 'Only site rating was spidered';

 elseif(parse_ratings($user_rating, $st_rating, $rating_id) === 'only_user')      
         $errors[] = 'Only user rating was spidered';

if()是否在第一次运行时记住函数的输出,或者每次有if()时都会运行;

假设脚本解析函数,第一个IF语句为负;然后它再次运行该函数以查看第二个IF是否也是负数,或者它是否记得第一次运行时的返回。

我想知道这一点,因为我希望它大部分时间都是真的,并且不希望连续4次调用该函数。

希望这是有道理的。

谢谢。

1 个答案:

答案 0 :(得分:2)

if()语句中的代码每次都会执行,让PHP“记住”值的唯一方法是使用变量:

$rating = parse_ratings($user_rating, $st_rating, $rating_id);
if($rating === 'empty') {
    $errors[] = 'Neither user_rating, nor site_rating cpule be spidered.'; 
} elseif($rating === 'only_site') {
    $errors[] = 'Only site rating was spidered';
} elseif($rating === 'only_user') }
    $errors[] = 'Only user rating was spidered';
}

或者,您可以使用switch()声明:

switch(parse_ratings($user_rating, $st_rating, $rating_id)) {
    case 'emtpy':
        $errors[] = 'Neither user_rating, nor site_rating cpule be spidered.'; 
        break;
    case 'only_site':
        $errors[] = 'Only site rating was spidered';
        break;
    case 'only_user':
        $errors[] = 'Only user rating was spidered';
        break;
    case true:
        break;
    default:
        $errors[] = 'An unhandle value was returned';
        break;
}