我有一个可以返回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次调用该函数。
希望这是有道理的。
谢谢。
答案 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;
}