繁体   English   中英

递归PHP Star-Rating功能不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM