跑出來~錯誤一大堆~help me

edited 十月 2013 in PHP新手區
嗚嗚嗚~
這個程式我是辦表資料庫表單中每個位置的值
裡面的值有1 2 3 4 5
如果是
1 ai_t+0
bi_t+0
ci_t+0.25
……2 3 4 5要累加
跑完[0][0]............[0][64]累加完後
就印出 ai_t
bi_t+0
ci_t+0.25

可是我錯了一大堆~
嗚嗚嗚~幫我改一改~
$SQL="SELECT * FROM fuzzy64";

$result = mysql_query($SQL);
$I = 0;
$ai_t = 0;
$bi_t = 0;
$ci_t = 0;
while ($answers = mysql_fetch_row($result))
{
for ($J=0;$J<sizeof($answers);$J++)
{
if($answers[$J] = 1)
{

$ai_t = ai_t+0;
$bi_t = bi_t+0;
$ci_t = ci_t+0.25;
}
else
if($answers[$J] = 2)
{
$ai_t = ai_t+0;
$bi_t = bi_t+0.25;
$ci_t = ci_t+0.5;
}
else
if($answers[$J] = 3)
{
$ai_t = ai_t+0.25;
$bi_t = bi_t+0.5;
$ci_t = ci_t+0.75;
}
else
if($answers[$J] = 4)
{
$ai_t = ai_t+0.5;
$bi_t = bi_t+0.75;
$ci_t = ci_t+1;
}
else
if($answers[$J] = 5)
{
$ai_t = ai_t+0.75;
$bi_t = bi_t+1;
$ci_t = ci_t+1;
}

}
echo $ai_t = ai_t;
echo $bi_t = bi_t;
echo $ci_t = ci_t;
echo "<br>";
$I++;
}

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1963

評論

  • edited 八月 2006
    1. 請先嘗試自己偵錯
    2. 請注意使用的標題
  • edited 八月 2006
    我下次會改進自已主題的發表方式
    我也自已找到錯誤在那裡了~可是我發現我的變數不會累加
    程式碼:
    $SQL="SELECT * FROM fuzzy64";

    $result = mysql_query($SQL);
    $I = 0;
    $ai = 0;
    $bi = 0;
    $ci =0;
    while ($answers = mysql_fetch_row($result))
    {
    for ($J=0;$J<sizeof($answers);$J++)
    {
    if($answers[$J] = 1)
    {

    $ai = $ai+0;
    $bi = $bi+0;
    $ci = $ci+0.25;
    }
    else
    if($answers[$J] = 2)
    {
    $ai = $ai+0;
    $bi = $bi+0.25;
    $ci = $ci+0.5;
    }
    else
    if($answers[$J] = 3)
    {
    $ai = $ai+0.25;
    $bi = $bi+0.5;
    $ci = $ci+0.75;
    }
    else
    if($answers[$J] = 4)
    {
    $ai = $ai+0.5;
    $bi = $bi+0.75;
    $ci = $ci+1;
    }
    else
    if($answers[$J] = 5)
    {
    $ai = $ai+0.75;
    $bi = $bi+1;
    $ci = $ci+1;
    }

    }
    echo $ai . " ";
    echo $bi . " ";
    echo $ci . " ";
    echo "<br>";
    $I++;
    }

    跑出來的結果:

    0 0 16
    0 0 32
    0 0 48
    0 0 64

    我的ai bi 都不會累加~而且ci也跑得不對~
    我要做的是在sql資料庫表單裡的
    [0][0]的ai bi ci + [0][1]...+ ...[0][64]的ai bi ci<br>
    .
    .
    .
    [4][0]....+.............................[4][64]

    是不是我的判斷寫錯了
    如果我要判斷[0][0]不可以用 $answers[$J] = x 那寫嗎?
  • edited 八月 2006
    判斷式是用==不是=
    你的if ($answers[$J] = 1)永遠是true
    所以只有會執行
    $ai = $ai+0;
    $bi = $bi+0;
    $ci = $ci+0.25;
  • edited 八月 2006
    cherry7402 寫道:
    是不是我的判斷寫錯了
    如果我要判斷[0][0]不可以用 $answers[$J] = x 那寫嗎?
    為甚麼不在運算中途把變量的值 echo 出來看看,看一看便甚麼都清楚明白了。
  • edited 八月 2006
    我懂了~原來php跟vb是不一樣的
    但我改好後發現了一個很好笑的問題
    程式:
    $SQL="SELECT * FROM fuzzy64";

    $result = mysql_query($SQL);
    $I = 0;
    $ai_t = 0;
    $bi_t = 0;
    $ci_t = 0;
    while ($answers = mysql_fetch_row($result))
    {
    for ($J=0;$J<sizeof($answers);$J++)
    {
    if ($answers[$J] === "1")
    {
    $ai = 0;
    $bi = 0;
    $ci = 0.25;
    $ai_t == $ai_t=+$ai;
    $bi_t == $bi_t=+$bi;
    $ci_t == $ci_t=+$ci;
    }
    else
    if ($answers[$J] === "2")
    {
    $ai = 0;
    $bi = 0.25;
    $ci = 0.5;
    $ai_t == $ai_t=+$ai;
    $bi_t == $bi_t=+$bi;
    $ci_t == $ci_t=+$ci;
    }
    else
    if ($answers[$J] === "3")
    {
    $ai = 0.25;
    $bi = 0.5;
    $ci = 0.75;
    $ai_t == $ai_t=+$ai;
    $bi_t == $bi_t=+$bi;
    $ci_t == $ci_t=+$ci;
    }
    else
    if ($answers[$J] === "4")
    {
    $ai = 0.5;
    $bi = 0.75;
    $ci = 1;
    $ai_t == $ai_t=+$ai;
    $bi_t == $bi_t=+$bi;
    $ci_t == $ci_t=+$ci;
    }
    else
    if ($answers[$J] === "5")
    {
    $ai = 0.75;
    $bi = 1;
    $ci = 1;
    $ai_t == $ai_t=+$ai;
    $bi_t == $bi_t=+$bi;
    $ci_t == $ci_t=+$ci;
    }
    echo $ai_t . " ";
    echo $bi_t . " ";
    echo $ci_t . " ";
    echo "  ";
    }

    echo "<br>";
    echo "<br>";
    echo "<br>";
    $I++;
    }
    我在mysql的fuzzy64表單裡放了4筆資料~每個記錄有64個欄位
    可是明明我是要run完一筆資料(64個欄位)後因該要echo出
    $ai_t $bi_t $ci_t 這三個變數因該是64個欄位的$ai $bi $ci之總合
    可是他只要一作完一個欄位後就立利echo出來,而且也不會累加後面欄位的
    $ai $bi $ci
    我想說把
    echo $ai_t . " ";
    echo $bi_t . " ";
    echo $ci_t . " ";
    echo "  ";
    拉出來
    放到echo "<br>";的前一行(放到for的回卷外面)
    但出來的值也不對阿!
    為什麼我的變數不會累加呢?
  • edited 八月 2006
    感覺更奇怪了
    if ($answers[$J] === "1")
    ===我不知道php會怎執行,完全沒概念
    應該是if ($answers[$J] == "1")

    $ai_t == $ai_t=+$ai;
    這不知該講什麼了
    應該是
    $ai_t += $ai;

    建議先把語法弄熟,這種錯誤不應該發生的
  • edited 八月 2006
    我了解了~
    那個===是別人跟我說的聽說php4有在用所以拿來試試看
    他的功能跟==可以說是一模一樣
    問題已經決解了~謝謝大家的幫忙
  • edited 八月 2006
    cherry7402 寫道:
    我了解了~
    那個===是別人跟我說的聽說php4有在用所以拿來試試看
    他的功能跟==可以說是一模一樣
    問題已經決解了~謝謝大家的幫忙
    在 php 中 == 跟 === 很不同,而且也是其中一個安全性漏洞的根源,使用的時候必須極度小心。舉例說:

    $a = 0

    $a == "twpug" ==> true
    $a === "twpug" ==> false

    $a == "0.0" ==> true
    $a === "0.0" ==> false

    $a == "+0" ==> true
    $a === "+0" ==> false

    還有更神奇的:

    $a == "0" ==> true
    $a === "0" ==> false

    在執行 == 前 PHP 會先轉換變量的型態(type conversion),但是 === 則不會,所以使用 === 的話,數字永遠不等於文字。
  • edited 八月 2006
    是的
    剛剛去官網查了一下
    ===跟!==是更加嚴謹的寫法
    說明是
    === (equal to and same type) and !== (not equal to or not same type)
    也就是說除了內容,連變數型態也必須符合

    官網網頁位置(用搜尋找===比較快)
    http://tw2.php.net/manual/en/language.expressions.php
Sign In or Register to comment.