1

我有一个可以返回 true 的函数;返回“空”;返回'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 次。

希望这是有道理的。

谢谢你。

4

1 回答 1

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;
}
于 2013-04-04T15:54:59.307 回答