-1

我正在尝试$score根据其$total_votes分数更改变量的值。现在的代码(当 I 时echo $score)每次运行该函数时都会产生一个值 1。这让我相信它$score = $score+1不能正常工作,代码中是否有我忽略的结构?

public function score($datediff,$total_votes){
    $score = 0;
    if ($total_votes < 10)                            { $score = $score+1;}
    if ($total_votes > 10 && $total_votes < 100 )     { $score = $score+1;}
    if ($total_votes > 100 && $total_votes < 1000 )   { $score = $score+1;}
    if ($total_votes > 1000 && $total_votes < 10000 ) { $score = $score+1;}

    echo $score.' ';
}
4

7 回答 7

3

注意:在参考此答案之前,请阅读评论

至于你回复我的评论,我得到的是你想这样加起来..

public function score($datediff,$total_votes){
            $score = 0;
            if ($total_votes < 10)                              { $score = $score+1;}
            if ($total_votes > 10 && $total_votes < 100 )       { $score = $score+2;}
            if ($total_votes > 100 && $total_votes < 1000 )     { $score = $score+3;}
            if ($total_votes > 1000 && $total_votes < 10000 )   { $score = $score+4;}

            echo $score.' ';
            }

您需要更改要添加到变量中的值$score

比如说你的总票数是 1500,除了最后一个条件之外没有一个条件满足,因此你试图在每个条件中添加的 +1 将不会执行,因为条件不满足,php 跳到其他,最后它添加最后一个条件中的值$score,所以如果你想要 +4 应该添加到你的if $score> 1000并且< 10000比你应该在最后一个条件中添加 +4 到你的变量$total_votes$score

于 2012-10-01T05:33:25.097 回答
2

你的条件是相互排斥的。你不能有

$total_votes < 10

同时

$total_votes > 10 && $total_votes < 100

因为变量不能同时 < 10 和 > 10。因此 $score 不能多次增加。您正在寻找的可能是

public function score($datediff,$total_votes){
    $score = 1;

    if ($total_votes > 10)
        $score++;
    if ($total_votes > 100)
        $score++;
    if ($total_votes > 1000)
        $score++;
    if ($total_votes > 10000)
        $score++;
}

请注意,函数实际上计算以 10 为底的对数的粗略版本:

$score = floor(log10($total_votes))
于 2012-10-01T05:25:41.253 回答
1

你的if陈述是相互排斥的。当一个条件为真时,其他条件为假。

于 2012-10-01T05:21:56.397 回答
0

尝试使用STATIC关键字..

public function score($datediff,$total_votes){
            static $score = 0;
            if ($total_votes < 10)                              { $score = $score+1;}
            if ($total_votes > 10 && $total_votes < 100 )       { $score = $score+1;}
            if ($total_votes > 100 && $total_votes < 1000 )     { $score = $score+1;}
            if ($total_votes > 1000 && $total_votes < 10000 )   { $score = $score+1;}

            echo $score.' ';
            }

$score它只会在第一次调用函数时初始化。

还要看看变量范围

于 2012-10-01T05:22:52.440 回答
0
public function score($total_votes){
    $score = 0;

    if ($total_votes < 10)     { $score = $score+1;}
    if ($total_votes < 100 )   { $score = $score+1;}
    if ($total_votes < 1000 )  { $score = $score+1;}
    if ($total_votes < 10000 ) { $score = $score+1;}

    echo $score.' ';
}

$datediff是无关的。

于 2012-10-01T05:38:14.580 回答
-1

首先,您的变量 $score 必须是全局变量或会话变量。

其次,您应该使用 else if 语句,以便它仅适用于一种条件。

根据您的编码,您每次调用此函数时都设置 $score = 0 因此在函数外部定义它并更改值并查看您的答案

注意:不要在函数中重置这个

于 2012-10-01T05:31:01.880 回答
-1
public function score($datediff,$total_votes){
    $score = 0;
    if ($total_votes > 0)       { $score = $score+1;}
    if ($total_votes > 10)      { $score = $score+1;}
    if ($total_votes > 100)     { $score = $score+1;}
    if ($total_votes > 1000 && $total_votes <= 10000 ){
        $score = $score+1;
    }

    echo $score.' ';
}
于 2012-10-01T05:54:23.787 回答