2013-03-02 50 views
0

我遇到了一行代码问题。我的老师甚至都没有看到这个问题,而且我已经打了近一个半星期了。任何帮助将不胜感激。ELSE语句有趣

代码:

{ 
    if (count($_POST['CINS']) > 0) 
    { 
    echo "<h2>Your CINS picks are:</h2>\n"; 
    echo "<ul>\n"; 
    foreach ($_POST['CINS'] as $element) 
    { 
     echo "\t<li>$element</li>\n"; 
    } // end of FOREACH statement 
    echo "</ul>\n"; 
    } // end of IF count CINS 

    if (count($_POST['CINT']) > 0) 
    { 
    echo "<h2>Your CINT picks are:</h2>\n"; 
    echo "<ul>\n"; 
    foreach ($_POST['CINT'] as $element2) 
    { 
     echo "\t<li>$element2</li>\n"; 
    } // End of FOREACH CINT 
    echo "</ul>\n"; 
    } // End of IF for CINT 
    else 
    { 
    echo "CINT = " . count($_POST['CINT']) . " CINS = " . count($_POST['CINS']) . "<br />\n"; 
    echo __LINE__; 
    if ((count($_POST['CINT'] == 0)) and (count($_POST['CINS'] == 0))) // This is where the problem lies. It's showing up the echo statements even when CINS has a count of 1. but if CINT has a count of 1, the echo statements do not show up. 
    { 
     echo "<h2>No classes</h2>\n"; 
     echo "<p>You need to pick a class from BOTH CINT and CINS to be a well rounded student.</p>\n"; 
     echo "CINT = " . count($_POST['CINT']) . " CINS = " . count($_POST['CINS']) . "<br />\n"; 
    } 
    } // END ELSE COUNT CINS 
} 
?> 
+0

代码应该做什么? – Ares 2013-03-02 04:56:00

+2

你是什么意思? – Oliver 2013-03-02 04:58:10

+0

您输入一个名称,然后从CINT和CINS类中选择复选框,然后显示哪些CINS和/或CINT类。但如果两者都不选择,则它会在底部的else语句中显示回显,但如果选择其中一个,则应该不显示任何错误。 – Nick 2013-03-02 04:59:02

回答

3

放错地方的括号

if ((count($_POST['CINT'] == 0)) and (count($_POST['CINS'] == 0))) -> wrong 

if ((count($_POST['CINT']) == 0) and (count($_POST['CINS']) == 0)) 
+0

非常感谢。 – Nick 2013-03-02 05:06:30

+0

艾@尼克谢谢你cibəgirmir。 Qu qu qoyda camaatəziyətçəkib。 – 2014-07-04 06:11:15

0

我想,你想这样:

if (count($_POST['CINS']) > 0) 
{ 
    … 
} // End of IF for CINS 

if (count($_POST['CINT']) > 0) 
{ 
    … 
} // End of IF for CINT 

if (count($_POST['CINS']) == 0 || count($_POST['CINT']) == 0) 
{ 
    … 
} 
1

你并不需要所有这些括号:

if(
    count($_POST['CINT']) == 0 AND 
    count($_POST['CINS']) == 0 
    ) 

看一些缩进怎么走一段很长的路要走:

{ 
    if (count($_POST['CINS']) > 0) { 
     echo "<h2>Your CINS picks are:</h2>\n"; 
     echo "<ul>\n"; 
     foreach ($_POST['CINS'] as $element) { 
      echo "\t<li>$element</li>\n"; 
     } 

     echo "</ul>\n"; 
    } 

    if (count($_POST['CINT']) > 0) { 
     echo "<h2>Your CINT picks are:</h2>\n"; 
     echo "<ul>\n"; 
     foreach ($_POST['CINT'] as $element2) { 
      echo "\t<li>$element2</li>\n"; 
     } 

     echo "</ul>\n"; 
    } 
else { 
    echo "CINT = " . count($_POST['CINT']) . " CINS = " . count($_POST['CINS']) . "<br />\n"; 
    echo __LINE__; 

    if(
     count($_POST['CINT']) == 0 AND 
     count($_POST['CINS']) == 0 
     ) { 
     echo "<h2>No classes</h2>\n"; 
     echo "<p>You need to pick a class from BOTH CINT and CINS to be a well rounded student.</p>\n"; 
     echo "CINT = " . count($_POST['CINT']) . " CINS = " . count($_POST['CINS']) . "<br />\n"; 
    } 
} 
+0

我做缩进。我稍后再做。否则对我来说它看起来不正确。 – Nick 2013-03-02 05:17:56

0

也许括号需要注意...

if ((count($_POST['CINT'] == 0)) and (count($_POST['CINS'] == 0))) 

可以更好地工作作为

if ((count($_POST['CINT']) == 0) && (count($_POST['CINS']) == 0)) 

给它射击 - 回应的结果。

+1

它解决了这个问题。感谢所有的帮助。 – Nick 2013-03-02 05:18:38