当前位置:  开发笔记 > 编程语言 > 正文

PHP for; 变量范围

如何解决《PHPfor;变量范围》经验,为你挑选了1个好方法。

for/foreach循环中的变量是否具有局部范围?如果是这样,我如何使其全球化?

page.php文件:


"; } else { $active = ""; echo "else " . $active. $title . $menu[$x] ."

"; }} include "header.php"; foreach ($menu as $value) { var_dump($active); echo "$value
"; } include "header.php"; ?> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

基本上,我在header.php中有这一行:


我希望列表的class ="mainNav active"如果它是那个页面而class ="mainNav"则不是.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!

所以我从@urfusion建议创建了一个函数.现在page.php:





"; } else { $active = " "; echo "else " . $active. $title . $menu[$x] . "

"; } echo "function" . $active . $value; return $active; } } include "header.php"; ?> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

而header.php:

  

仍然没有,现在我似乎已经失去了回声声明的输出......



1> axiac..:

for/foreach循环中的变量是否具有局部范围?如果是这样,我如何使其全球化?

PHP中只有两种范围:全局范围和本地函数范围.

局部函数作用域包含函数的参数和在函数体内设置的变量.范围是在调用函数时创建的,并且在函数执行完成时(在执行return语句之后或在}最后一个语句之后到达其结束时)销毁它.

全局范围包含由任何函数外部的代码设置的所有变量.它由主脚本(由解释器调用的脚本)创建.

included和required文件不创建新的作用域.包含文件中的函数外部的代码在放置includeor require语句的范围内运行.这意味着,如果include语句出现在包含该include语句的函数的本地范围的任何函数之外,则为全局范围.所有四种包括语句(include,include_once,require,require_once)的工作就此事相同.

任何变量在其范围内都可用,因为它是第一次设置,直到使用unset()或直到其范围被销毁为止.

了解更多关于variables scope在上PHP文件.


回答你的问题:如果将foror foreach循环放在一个函数中,那么它们定义的变量就具有局部作用域(函数的作用域); 否则他们有全球范围.


您的代码中的问题(坏缩进不会帮助您看到它)是第一个foreach.

这是正确缩进的代码:

foreach ($menu as $value) {
    if ($title == $value) {
        $active = "active";
        echo "if " . $active. $title . $menu[$x] ." 

"; } else { $active = ""; echo "else " . $active. $title . $menu[$x] ."

"; } }

问题很明显:它$active在每次迭代时修改变量的值.除了最后的任务之外的所有任务$active都是无用的.只有最后一个才算.并且,最有可能的是,在最后一次迭代中它采用else分支if ($title == $value)$active变为''(空字符串).

这个问题有几个简单的解决方案.例如,您可以在上述内容中显示菜单foreach:

foreach ($menu as $value) {
    if ($title == $value) {
        $active = "active";
    } else {
        $active = "";
    }
    ?>
    
    

事实上,所有这些东西都应该进入header.php.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有