将你的$c术语(在循环中)放入print_r/var_dump 查看您尝试比较的属性值是否与您要查找的实际值相同(请参见下文)。
我还在if语句中添加了一个三元运算符,这是更好的做法。(有关三元运算符的更多信息,请阅读下文)。
<menu id="nav">
    <ul>   
    <?php $cat_id = get_cat_ID();
    foreach( $categories as $c ):?>
        <?php print_r($c); ?>         
        <li class="<?php echo $c->term_id == $cat_id ? \'active\' : null ;} ?>">
        <a href="<?php echo get_category_link( $c->term_id ); ?>" title="<?php echo $c->cat_name ;?>">
        <?php echo $c->cat_name ;?>
        </a>                
        </li>
    <?php endforeach;   ?>  
    </ul>
</menu>
Ternary Operator
在计算机编程中,?:是三元运算符,是几种编程语言中基本条件表达式语法的一部分。它通常被称为条件运算符、内联if(iif)或三元if。
if(1==1) echo \'true\'; 
else echo \'false\';
 可以在如下三元运算符中完成:
echo 1==1 ? \'true\' : \'false\';
 另一个例子
if(1==1) $boolean = true;
else $boolean = false;
 可以在如下三元运算符中完成:
$boolean = 1==1 ? true : false;
 由于PHP 5.3,可以省略运算符的“中间部分”。速记三元运算符只能用于匹配false
if(1!=2) echo \'false\';
 三元运算符:
echo 1!=2 ?: \'false\';
 阅读更多:
http://php.net/manual/en/language.operators.comparison.php