Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP返回值为1_Php - Fatal编程技术网

PHP返回值为1

PHP返回值为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

我仍然无法让这个审查系统正常工作。 我知道平均评分是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);
    // 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';
}