0

さて、私がやりたいことは以下のコードで明確になるはずです。各行について、ヘッダーが0の場合は最初のifステートメントを実行し、1の場合は2番目を実行します。

問題は、私が何に設定したかは関係ありません。ステートメント思考ヘッダーが常に1である場合、そうでない場合でも、常に2番目に実行されます。

テストするために、2番目のifステートメントにecho(int)$ row ['header']を追加し、すべての行に対して1をエコーし​​ました。

誰かが私がそれを私が望むことをするようにする方法について何か手がかりを持っていますか?

助けてくれてありがとう

私のphpコード:

$result = mysql_query("SELECT * FROM LeftMenu_items");
while ($row = mysql_fetch_assoc($result))
{
    if ((int)$row['header'] = 0)
    {
        // echos value is on or not
        echo "<tr><td class='LeftMenu'><a href='" . $row['url'] . "'><b>" . $row['text'] . "</b></a></td></tr>\n";
    }
    else if ((int)$row['header'] = 1)
    {
        // header
        echo "<tr><td class='LeftMenu'>" . (int)$row['header'] . "<b>" . $row['text'] . "</b></td></tr>\n"; 
    }
    else echo "error displaying url";

私のテーブルは次のようになります。

structure:
id  int 
text    text    
url text    
Header  tinyint 

data:
1   Home    http://drudexflash.com/ 1
2   test1   http://text.com/    0
3   ttt blahz   1
4   nullnull    ass 0
4

1 に答える 1

1

問題は、比較するのではなく、変数を割り当てていることです。

if((int)$row['header'] = 0)

する必要があります

if ((int)$row['header'] == 0)

これは珍しいバグではないので、私が時々行うことは、比較と割り当てを比較していることを明確にするために、値と変数の順序を切り替えることです。

例:

if (0 = (int)$row['header']) // even if you don't catch this as incorrect
                             // php will throw a 'parse error'
if (0 == (int)$row['header']) // correct, no error

いくつかの有用なドキュメント:http ://www.php.net/manual/en/language.expressions.php http://www.php.net/manual/en/language.operators.comparison.php

于 2012-05-29T01:30:36.930 に答える