0

已经发布了类似的问题,但我一直无法找到答案。

此 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>
?>

这似乎是一个非常基本的问题,但对于我的生活,我一直无法弄清楚。社区的帮助会很大。提前致谢。

4

1 回答 1

1

因为$subject_id_top函数内部是指函数$subject_id_top范围之外(全局范围),所以你必须“导入”它,可以这么说,使用以下语句:

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 ); ?>
于 2013-03-26T01:16:25.590 回答