要包含的PHP传递变量
我试图将一个变量传递到包含文件中。我的主机更改了PHP版本,现在我尝试的任何解决方案都不起作用 我想我已经尝试了我能找到的每一个选择。我相信这是最简单的事情 变量需要从调用的第一个文件(实际上是要包含的PHP传递变量,php,variables,include,global-variables,global,Php,Variables,Include,Global Variables,Global,我试图将一个变量传递到包含文件中。我的主机更改了PHP版本,现在我尝试的任何解决方案都不起作用 我想我已经尝试了我能找到的每一个选择。我相信这是最简单的事情 变量需要从调用的第一个文件(实际上是$\u服务器['PHP\u SELF'],需要返回该文件的路径,而不是包含的second.PHP)进行设置和计算 选项一 $variable = "apple"; include "myfile.php?var=$variable"; // and I tried with http: and full
$\u服务器['PHP\u SELF']
,需要返回该文件的路径,而不是包含的second.PHP
)进行设置和计算
选项一
$variable = "apple";
include "myfile.php?var=$variable"; // and I tried with http: and full site address too.
$variable = $_GET["var"]
echo $variable
在第一个文件中:
global $variable;
$variable = "apple";
include('second.php');
function passvariable(){
$variable = "apple";
return $variable;
}
passvariable();
<?php
$myvariable="from first file";
include ("./mysecondfile.php"); // in same folder as first file LOLL
?>
global $variable;
$variable = "apple";
include('second.php');
$variable = "apple";
include('second.php');
在第二个文件中:
echo $variable;
global $variable;
echo $variable;
选项二
在第一个文件中:
global $variable;
$variable = "apple";
include('second.php');
function passvariable(){
$variable = "apple";
return $variable;
}
passvariable();
<?php
$myvariable="from first file";
include ("./mysecondfile.php"); // in same folder as first file LOLL
?>
global $variable;
$variable = "apple";
include('second.php');
$variable = "apple";
include('second.php');
选项三
$variable = "apple";
include "myfile.php?var=$variable"; // and I tried with http: and full site address too.
$variable = $_GET["var"]
echo $variable
这些对我都不管用。PHP版本是5.2.16
我错过了什么
谢谢 选项3是不可能的-您将获得.php文件的渲染输出,就像您在浏览器中点击该url一样。如果您得到的是原始PHP代码(如您所愿),那么您的站点的所有源代码都将公开,这通常不是一件好事 选项2没有多大意义-您将把变量隐藏在函数中,并受PHP变量范围的约束。您还必须有
$var=passvariable()
的地方才能将“内部”变量转换为“外部”,这样您就回到了原点
选择1是最实际的include()
基本上会在指定的文件中发出声音并在那里执行,就好像文件中的代码实际上是父页面的一部分。它看起来确实像一个全局变量,这里的大多数人都不喜欢它,但根据PHP的解析语义,这两个变量是相同的:
$x = 'foo';
include('bar.php');
及
关于OP的问题,特别是“需要从调用的第一个文件(实际上是“$\u SERVER['PHP\u SELF']”来设置和计算变量,并且需要返回该文件的路径,而不是包含的第二个.PHP文件) 这将告诉您该文件包含哪些文件。将其放入包含的文件中
$includer = debug_backtrace();
echo $includer[0]['file'];
考虑到php中最基本级别的include语句从文件中获取代码并将其粘贴到调用它的位置,以及include手册中陈述的以下事实: 包含文件时,它包含的代码将继承包含文件所在行的变量范围。从该点开始,调用文件中该行可用的任何变量都将在被调用文件中可用 这些事情让我觉得有一个完全不同的问题。此外,选项3永远不会起作用,因为您没有重定向到
second.php
,您只是将其包括在内,而选项2只是一个奇怪的解决方案。php中包含语句的最基本示例是:
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
vars.php
test.php
考虑到选项1最接近这个示例(尽管它应该更复杂),并且它不起作用,这让我认为您在include语句中犯了错误(相对于根的错误路径或类似问题)。根据php文档(请参阅)$\u SERVER['php\u SELF']是“当前执行脚本的文件名”
INCLUDE语句“包含并计算指定的”文件,并且“它包含的代码继承发生INCLUDE的行的变量范围”(请参阅)
我相信$\u SERVER['PHP\u SELF']将返回第一个文件的文件名,即使在“second.PHP”中的代码使用时也是如此
我用以下代码对此进行了测试,结果与预期一样($phpSelf是第一个文件的名称)
这样做:
$checksum = "my value";
header("Location: recordupdated.php?checksum=$checksum");
我这里也有同样的问题,您可以使用$GLOBALS数组
$GLOBALS["variable"] = "123";
include ("my.php");
它还应该执行以下操作:
$myvar = "123";
include ("my.php");
....
echo $GLOBALS["myvar"];
祝您度过愉快的一天。我发现include参数需要是整个文件路径,而不是相对路径或部分路径才能工作。您可以使用
Drupal在其theme()函数中使用它 这里是一个带有
$variables
参数的渲染函数
函数includeWithVariables($filePath,$variables=array(),$print=true)
{
$output=NULL;
如果(文件_存在($filePath)){
//将变量提取到本地名称空间
提取($变量);
//启动输出缓冲
ob_start();
//包括模板文件
包括$filePath;
//结束缓冲并返回其内容
$output=ob_get_clean();
}
如果($print){
打印$输出;
}
返回$output;
}
/index.php:
includeWithVariables('header.php',array('title'=>'header title');
/header.php:
这对我很有用:将第二个文件的内容包装到函数中,如下所示: firstFile.php
我遇到了这个问题,我有一个文件根据GET参数设置变量。该文件无法更新,因为它在大型内容管理系统的另一个部分上工作正常。但是我希望通过include文件运行该代码,而不使参数实际位于URL字符串中。简单的解决方案是y您可以像设置任何其他变量一样,在第一个文件中设置GET变量
而不是:
include "myfile.php?var=apple";
它将是:
$_GET['var'] = 'apple';
include "myfile.php";
选项1在PHP7中对我有效,当然在PHP5中也有效。对于变量访问,包含的文件不需要全局范围声明,包含的或“必需”的文件是脚本的一部分,只需确保“包含”“在变量声明之后。也许您在PHP.ini中对变量全局范围有一些错误配置
在第一个文件中尝试:
global $variable;
$variable = "apple";
include('second.php');
function passvariable(){
$variable = "apple";
return $variable;
}
passvariable();
<?php
$myvariable="from first file";
include ("./mysecondfile.php"); // in same folder as first file LOLL
?>
global $variable;
$variable = "apple";
include('second.php');
$variable = "apple";
include('second.php');
mysecondfile.php
<?php
echo "this is my variable ". $myvariable;
?>
它应该有用。。。如果它不只是尝试重新安装PHP。您可以在“second.PHP”中执行所有操作,并使用jQuery添加变量
<div id="first"></div>
<script>
$("#first").load("second.php?a=<?php echo $var?>")
</scrpt>
$(“#first”).load(“second.php?a=“)
我知道这是一个老问题,但现在我无意中发现了它,没有人对此表示怀疑