首页 新闻 会员 周边 捐助

php 文件中函数全局变量

0
悬赏园豆:50 [已解决问题] 解决于 2015-08-24 11:29

当a文件的函数调用b文件的函数时,而b文件的函数包含c文件,b文件的函数里要使用c文件的全局变量时,
会出现无法调用其C文件全局变量,却可以调用C文件的函数, 请问这是为什么?

问题补充:

a.php

<?php 
 require_once("b.php");

 global $key,$value;
 test();

 


?>

b.php

<?php 


  $key = "key";
  $value = "value";

  function test()
  {
     require_once("c.php");
     global $cccccc;
     // echo $key.$value;
     echo $cccccc;
     echo ctest();
  }





?>

c.php

<?php 

   $cccccc = "this is C file content";

   function ctest()
   {

      // global $cccccc ;
      $cccccc = "kkk";
      echo "C func echo :".$cccccc;
   }

?>                                            

初步理解: 当网页调用a文件时,会全部加载b文件内容,包括C文件全局变量及函数,而当b文件调用C文件内容时,不会全部加载进来,会忽视其全局变量。
cogitoergosum的主页 cogitoergosum | 初学一级 | 园豆:120
提问于:2015-06-27 16:54
< >
分享
最佳答案
0

你把require_once("c.php");放到test()函数之外就可以了。

收获园豆:50
ohmygirl | 菜鸟二级 |园豆:304 | 2015-06-29 21:44

将require_once("c.php");放到test()函数内部。就不可以了。

能否说下是什么原因吗?

cogitoergosum | 园豆:120 (初学一级) | 2015-08-24 11:10

这两者之间有什么区别的?

是跟php文件解释器有关吗?

cogitoergosum | 园豆:120 (初学一级) | 2015-08-24 11:17

去掉b.php文件中global $cccccc;这一行,require_once("c.php");放到test()函数内部。可以正常显示。

个人理解:

     非在函数内部require/include相当于将b文件全部包含进来了,相当于b文件内容都是a的了。而在a文件函数内部要使用外部的变量,只能用globa方式引用外部变量

    而在php文件中,在函数内部直接使用require/include,则无需使用global了。函数内部已经包含了C文件全部内容。

cogitoergosum | 园豆:120 (初学一级) | 2015-08-24 11:28
其他回答(1)
0

去掉b.php文件中global $cccccc;这一行,require_once("c.php");放到test()函数内部。可以正常显示。

个人理解:

     非在函数内部require/include相当于将b文件全部包含进来了,相当于b文件内容都是a的了。而在a文件函数内部要使用外部的变量,只能用globa方式引用外部变量。

    而在php文件中,在函数内部直接使用require/include,则无需使用global了。函数内部已经包

cogitoergosum | 园豆:120 (初学一级) | 2015-08-24 11:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册