我试图访问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变量但不在内部。 我能知道为什么以及如何在这种情况下访问变量?
谢谢
答案 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)