如果函数内的语句不起作用

时间:2013-03-26 01:13:35

标签: php function if-statement

已发布类似问题,但我未能找到答案。

这个IF语句可以正常使用。

$subject_id_top = "case studies";
if($subject_id_top == "case studies") {echo "active";} 

但是当我在函数中插入这个IF语句时,它不起作用。

<style>

.active {
color:#F00;
}
</style>


<?php 
$subject_id_top = "case studies";

function menu_active() {
 if($subject_id_top == "case studies") {echo "active";} 
}


<a class="<?php menu_active(); ?>" href="#">Case Studies</a>
?>

这似乎是一个非常基本的问题,但对于我的生活,我还没能弄明白。社区帮助将是伟大的。提前谢谢。

1 个答案:

答案 0 :(得分:1)

因为函数内部的$subject_id_top在函数范围之外引用$subject_id_topthe global scope),所以你必须使用以下语句“导入”它: / p>

global $subject_id_top;

你的功能应该变成:

function menu_active() {
    global $subject_id_top;
    if($subject_id_top == "case studies") {echo "active";} 
}

然而,以这种方式依赖来自外部范围的信息通常不是优选的。你可以重构你的函数来接受一个绕过这种行为的参数,例如:

function menu_active( $subject_id_top ) {
    if($subject_id_top == "case studies") {echo "active";} 
}

然后使用$subject_id_top从全局范围调用该函数作为其参数:

<?php menu_active( $subject_id_top ); ?>