繁体   English   中英

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

[英]If Statement Inside a Function Not working

类似的问题已经发布,但我找不到答案。

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

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

因为函数内部的$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 ); ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM