如何跨两个文件访问变量
Posted
技术标签:
【中文标题】如何跨两个文件访问变量【英文标题】:How to access a variable across two files 【发布时间】:2013-09-06 11:49:25 【问题描述】:我有三个文件——global.php,
test.php
、test1.php
全局.php
$filename;
$filename = "test";
test.php
$filename = "myfile.jpg";
echo $filename;
test1.php
echo $filename;
我可以从 test 和 test1 文件中读取这个变量
include 'global.php';
现在我想在test.php
中设置$filename
的值和我想在test1.php.
中读取的相同值
我也尝试过使用会话变量,但由于两个不同的文件,我无法捕获该变量。
如何实现这一点............
提前感谢您的帮助.....
【问题讨论】:
你能给我们看一些代码吗? IMO,没有理由不这样做。还要记住,每次重新加载页面时变量都是临时的,因此需要重新创建所有变量。 我已经为所有三个文件添加了代码。 你的会话在哪里? 【参考方案1】:首先在页面顶部开始会话。
将变量分配到会话中。
检查一下并亲自尝试
test.php
<?php
session_start(); // session start
include("global.php");
$filename = "myfile.jpg";
$_SESSION['samplename']=$filename ; // Session Set
?>
test1.php
<?php
session_start(); // session start
$getvalue = $_SESSION['samplename']; // session get
echo $getvalue;
?>
【讨论】:
在为 $filename 赋值后,我正在关闭 test.php 文件。所以会话没有持续 @user2688512 在 session_start 之后包含函数使用【参考方案2】:用途:
global.php
<?php
if(!session_id()) session_start();
$filename = "test";
if(!isset($_SESSION['filename']))
$_SESSION['filename'] = $filename;
?>
test.php
<?php
if(!session_id()) session_start();
//include("global.php");
$_SESSION['filename'] = "new value";
?>
test1.php
<?php
if(!session_id()) session_start();
$filename = $_SESSION['filename'];
echo $filename; //output new value
?>
【讨论】:
在test.php
中设置变量名是否需要包含?
感谢@LouieBertoncin,很好的发现。无需在test.php
中包含global.php
【参考方案3】:
我认为理解这一点的最佳方法如下: 你有一个文件 index.php 定义了一些变量。
$indexVar = 'sometext';
这个变量在所有 index.php 文件中都是可见的。但是和函数一样,如果你包含其他文件,这个变量是不可见的,除非你指定这个变量的作用域是全局的。
您应该在新文件中重新定义此变量的范围,如下所示:
global $indexVar;
然后,您将能够像在主文件中一样调用它来直接访问。您可以在两个文件中使用“echo”,index.php 和任何其他文件。
【讨论】:
以上是关于如何跨两个文件访问变量的主要内容,如果未能解决你的问题,请参考以下文章