【问题标题】:PHP - included file cant read variablePHP - 包含文件无法读取变量
【发布时间】:2012-01-12 07:47:53
【问题描述】:

我在我的 php 脚本中包含了一个文件,但由于某种原因,它无法读取我在全局范围内声明的变量,因为包含该文件...

我是如何安排一切的:

包含在函数内部

变量是全局声明的(注意:即使我在包含前一行声明了变量,它也无法读取变量(虽然这个 is 在函数中))

包含文件从函数中读取变量(换句话说:语句if ($errorcheckonly==true) {}在包含文件的函数内部)

这是否会影响它为什么不起作用?

代码示例:

Main file:
$errorcheckonly = true; //declared here or declared beneath, not both
function processOrder() {
$errorcheckonly = true;
include 'passengersform.php'; //forced to only use error checks
}
processOrder();

Included file:
function processtickets () {
echo '<script language="javascript">alert("'.$errorcheckonly.'");</script>';
if ($errorcheckonly==true) { exit; }
}
processtickets();

【问题讨论】:

  • 请出示您的代码。如果它很长,请尝试创建一个重现您的问题的最小示例。创建此示例时,您可能会自己找到解决方案... :-)
  • 这就是我描述布局的原因。但就像你问的那样,我添加了一段代码。 :)

标签: php variables include


【解决方案1】:

查看其他示例

<?php
    $var = 'test' ;

    function A ( ) {
        global $var ;

        echo $var ;
    }   

    A ( ) ;

输出为test

【讨论】:

  • 我现在已经在任何函数之外声明了 $errorcheckonly,使用了全局 $errorcheckonly;在主文件中的函数和包含文件中的函数中读取它,谢谢!
  • 是否也可以从一个函数中声明一个全局变量,而不在该函数之外声明它?
  • 啊好吧,可惜我不能做全局变量=值;但我想我可以忍受,哈哈
  • 再次感谢您的帮助!
  • Nopz .. 在会话中存储数据的另一种方式。
【解决方案2】:

看这个简单的例子

<?php
function A ( ) {
    global $var ;
    $var = 'test' ;
}

A ( ) ;

function B ( ) {
    global $var ;
    echo $var ;
}   

B ( ) ;

【讨论】:

  • 当我在函数外声明变量时,默认情况下不是全局变量吗?
  • @laarsk 否。阅读 php 文档以了解有关变量范围的更多信息 (php.net/manual/en/language.variables.scope.php)
  • 不,但无论哪种方式,您都必须在为您定义范围的函数中使用 global $ var
  • 哇。这让我大开眼界。真的是因为我以前做过类似的事情,而且它对我来说总是很完美......另外,我是否必须使用 global 来读取变量?现在这很奇怪。 (但是,也非常方便,因为您现在可以拥有重复的变量?)
猜你喜欢
  • 2016-08-06
  • 2020-08-25
  • 1970-01-01
  • 2011-05-20
  • 2010-10-13
  • 2017-11-22
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多