将你的$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