有没有办法在PHP函数内访问其他文件中的变量?

时间:2018-01-16 08:29:15

标签: php function variables

我试图访问php函数中其他文件中的变量。在函数之外,它带来了我想要的价值而没有问题,但我不知道为什么如果我尝试访问php函数内的变量,我无法访问该值。

我有一个名为name.php的文件

<?php 
$name1 = "aa";
$name2 = "bb"; 
?>

并且在index.php中我试图像这样访问name.php中的变量。

<?php
include_once('name.php');
echo $name1;


name();
function name(){
echo $name1;
}

?>

正如我所说,我可以在函数外部打印name1变量但不在内部。 我能知道为什么以及如何在这种情况下访问变量?

谢谢

5 个答案:

答案 0 :(得分:2)

你的问题来自PHP的基础:函数的范围是本地的,而不是全局的,与JavaScript相反。

您可以使用全局变量来实现您想要的目标,但我强烈建议您不要使用它们。

对我而言,最好的方法是将变量直接传递给函数,或使用闭包。

// Example 1 : pass variables to the function
function name($name1) {
    echo $name1;
}

// Example 2 : use a closure
$myNameFunc = function() use($name1) {
    echo $name1;
};

您可以从PHP documentation了解有关闭包的更多信息。

答案 1 :(得分:1)

在PHP(以及许多其他语言)中,变量仅在定义它们的范围内可见。在您的示例中:

function toggle_sell(){
    var is_disabled = $('#sell-input').prop('disabled');
    alert (is_disabled);
  }

有两种方法可以从函数内的全局范围访问变量。其中一个是在定义变量时使用关键字<?php $name1 = "aa"; $name2 = "bb"; //this is the *global* scope ?> <?php include_once('name.php'); echo $name1; // you are still in the global scope so $name1 is defined name(); function name(){ echo $name1; // here you are in the name() function scope. The variable $name is not defined here } ?> 。这使得变量在“全局”范围内的所有范围内都可见。这是不推荐的,因为变量将在您不需要它的范围中可见(其他原因可能有人可以更好地解释)。

您可以做的最好的事情是将变量作为参数传递给您的函数。

您可以像这样定义函数:

global

然后再调用你的函数:

function name($param){
    echo $param;
}

答案 2 :(得分:0)

您可以使用全局变量,也可以在函数中添加参数以传递值。

使用Global:

echo name();
function name(){
  global $name1, $name2;
  echo $name1;
}

通过添加功能参数:

echo name($name1);
function name($name1){
  echo $name1;
}

答案 3 :(得分:0)

您没有将值传递给函数。试试这个

function name($name1){
echo $name1;
}

答案 4 :(得分:-1)

在功能

中使用global $name;

详细了解globals变量。

相关问题