>好吧,所以我想做的事情应该通过下面的代码清楚,对于每一行,我想用他们的代码运行代码,如果标头为 0,则运行第一个 if 语句,如果它是 1,则运行第二个。
问题是,我将其设置为什么并不重要,它总是运行第二个 if 语句思维标头始终为 1,即使它不是。
为了进行测试,我在第二个 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
问题是你正在分配一个变量而不是比较。
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.phphttp://www.php.net/manual/en/language.operators.comparison.php