PHP返回值为1
我仍然无法让这个审查系统正常工作。 我知道平均评分是3.57,但只要我加上if(),我得到的结果就是1PHP返回值为1,php,Php,我仍然无法让这个审查系统正常工作。 我知道平均评分是3.57,但只要我加上if(),我得到的结果就是1 // collect 5 lastest reviews for viewing $sql = "SELECT AVG(rating) FROM reviews WHERE review_id = '$id'"; $query = mysqli_query($conn, $sql); $AvgReview = mysqli_fetch_row($query); // H
// collect 5 lastest reviews for viewing
$sql = "SELECT AVG(rating) FROM reviews WHERE review_id = '$id'";
$query = mysqli_query($conn, $sql);
$AvgReview = mysqli_fetch_row($query);
// Here we have the toatal row count
$AvgReviews = $AvgReview[0];
if($AvgReviews = 1){
echo '1star';
}
//next else is new
else if($AvgReviews >= 1){
echo '2star';
}
//next else is new
else if($AvgReviews >= 2){
echo '3star';
}
//next else is new
else if($AvgReviews >= 3){
echo '4star';
}
//next else is new
else if($AvgReviews >= 4){
echo '5star';
}
这是因为您正在将
1
分配给$AvgReviews
。(=
)获取右侧的值,将其分配给左侧的名称,然后返回分配的值。在本例中,这总是1
,PHP将其解释为true
请使用以下选项:
您将获得“1star”,因为您正在为$AvgReviews赋值1。
更改代码以比较值
if ($AvgReviews == 1) {
此外,你需要颠倒你的代码,否则你最终只能得到1或2颗星。
我建议将其更改为:
if ($AvgReviews > 4) {
echo '5star';
}
else if($AvgReviews > 3) {
echo '4star';
}
else if($AvgReviews > 2) {
echo '3star';
}
else if($AvgReviews > 1) {
echo '2star';
}
else {
echo '1star';
}
您需要使用
==
进行比较if($AvgReviews==1){
if($AvgReviews=1){应该是if($AvgReviews==1){
($AvgReviews=1)
应该是($AvgReviews<1)
,最简单的例子应该是$v=0;if($v=1){echo“oops”}
由于3.57
符合else if($AvgReviews>=1)的标准,您还需要取消if/else if检查。
您将获得2star
而不是4star
。请向OP(以及SO的未来访问者)解释为什么你这么做。谢谢你的帮助,但是我现在得到了2。正如评论中已经提到的,你需要更改ifs的顺序,因为每个大于1的值都将匹配($AvgReviews>=1)
if ($AvgReviews > 4) {
echo '5star';
}
else if($AvgReviews > 3) {
echo '4star';
}
else if($AvgReviews > 2) {
echo '3star';
}
else if($AvgReviews > 1) {
echo '2star';
}
else {
echo '1star';
}