0

好的,所以我想要做的应该通过下面的代码来清楚,对于每一行我想用它们运行代码,如果标题为 0,则运行第一个 if 语句,如果它是 1,则运行第二个。

问题是,我将它设置为什么并不重要,它总是运行第二个 if 语句认为标题始终为 1,即使它不是。

为了测试,我将 echo (int)$row['header'] 添加到第二个 if 语句中,并且对于每一行,它都回显 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 回答