[英]Recursive PHP Star-Rating function not working
我试图在PHP中编写一个星级评分函数来返回结果(不仅仅是回显它)。
我的新版本是:
function getRating($rating, $ret = '') {
if ($rating == 0) { return $ret; }
if ($rating < 1) {
$ret .= '<span class="fa fa-star-half-empty"></span>';
$rating-= 0.5;
} else {
$ret .= '<span class="fa fa-star"></span>';
$rating-= 1;
}
getRating($rating, $ret);
}
$var = getRating(5.0);
返回null。 旧版本只是回应它,但我希望它在变量中保持评级:
function getRating($rating,) {
if ($rating == 0) { return; }
if ($rating < 1) {
echo '<span class="fa fa-star-half-empty"></span>';
$rating-= 0.5;
} else {
echo '<span class="fa fa-star"></span>';
$rating-= 1;
}
getRating($rating);
}
getRating(5.0);
这个用星星显示<span>
。 我在第一个函数中做错了什么? 提前致谢。
你需要在函数中有一个返回值,你应该主要从外面调用它。 这是一个有效的例子: https : //3v4l.org/t2G7F
码:
function getRating($rating, $ret = '') {
if ($rating == 0) { return $ret; }
if ($rating < 1) {
$ret .= '<span class="fa fa-star-half-empty"></span>';
$rating-= 0.5;
} else {
$ret .= '<span class="fa fa-star"></span>';
$rating-= 1;
}
return getRating($rating, $ret);
}
echo getRating(5.0);
您可以pass by reference
来尝试此操作
function recGerRating(&$rating, &$html=null){
if($rating == 0 ) return $html;
if($rating < 1){
$html .='<span class="fa fa-star-half-empty"></span>';
$rating-= 0.5;
return $html;
}else{
$html .= '<span class="fa fa-star"></span>';
$rating-= 1;
return recGerRating($rating, $html);
}
}
$r = 5;
echo recGerRating($r);
实例: https : //3v4l.org/k8RXt
您可以通过链接传递变量。 总是从函数返回响应更昂贵的操作比通过链接传递变量并更改它。 这种方法使用更少的内存。
function getRating($rating, &$ret) {
if ($rating == 0) { return; }
if ($rating < 1) {
$ret .= '<span class="fa fa-star-half-empty"></span>';
$rating-= 0.5;
} else {
$ret .= '<span class="fa fa-star"></span>';
$rating-= 1;
}
getRating($rating, $ret);
}
$var = "";
getRating(4.5, $var);
echo $var;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.