Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用在局部范围内创建的变量;不分配;在全球_Php_Function_Scope_Global_Local - Fatal编程技术网

Php 如何使用在局部范围内创建的变量;不分配;在全球

Php 如何使用在局部范围内创建的变量;不分配;在全球,php,function,scope,global,local,Php,Function,Scope,Global,Local,我试图使用在局部范围内创建的变量,而不在全局范围内分配该变量。看看我的意思: <? function foo(){ $bar = inside; } foo(); echo $bar; // It will give an error that $bar is not assigned ?> 现在你可能已经明白我的意思了。。?是的,我想回显$bar,而不在全局范围内分配它 我们很荣幸地看到了一些编码示例 提前感谢使用返回值 <?php function foo()

我试图使用在局部范围内创建的变量,而不在全局范围内分配该变量。看看我的意思:

<?
function foo(){
    $bar = inside;
}
foo();
echo $bar; // It will give an error that $bar is not assigned
?>

现在你可能已经明白我的意思了。。?是的,我想回显$bar,而不在全局范围内分配它

我们很荣幸地看到了一些编码示例

提前感谢

使用返回值

<?php
function foo(){
    $bar = "inside";
    return $bar;
}
$bar = foo();
echo $bar;
?>

使用返回值

<?php
function foo(){
    $bar = "inside";
    return $bar;
}
$bar = foo();
echo $bar;
?>

唯一可能的方法是使用超级全局(至少不返回):

否则,您将首先在全局范围内定义它,然后使用以下命令指定您需要访问它:


更好的选择是使用范围仍在对象内且仍能保持代码结构和完整性的对象:

class Foo
{
  var $bar = null;

  function Bar()
  {
    $this->bar = 'baz';
  }
}

$foo = new Foo();
$foo->Bar();
echo $foo->bar;

唯一可能的方法是使用超级全局(至少不返回):

否则,您将首先在全局范围内定义它,然后使用以下命令指定您需要访问它:


更好的选择是使用范围仍在对象内且仍能保持代码结构和完整性的对象:

class Foo
{
  var $bar = null;

  function Bar()
  {
    $this->bar = 'baz';
  }
}

$foo = new Foo();
$foo->Bar();
echo $foo->bar;

如果要从外部访问局部变量的内容,则有3个选项:

使用全局变量:通常不推荐,也不是您想要的

返回该变量的值:


将引用变量用作函数的属性:



这有帮助吗?

如果要从外部访问局部变量的内容,您有3个选项:

使用全局变量:通常不推荐,也不是您想要的

返回该变量的值:


将引用变量用作函数的属性:




这有帮助吗?

您要求的是没有全局的全局,这显然是不可能的。有更好的方法去做你想做的事;告诉我们它是什么。我正在尝试制作一个函数,使SQL查询更容易,它以$result(local)返回查询结果。我想在运行函数后将$result分配给另一个变量(全局),但不要这样做。你的代码会很糟糕。按照昆汀的建议去做,尽管这不是你要求的。这正是$http_response_header的工作原理-很遗憾,提出这个建议的人没有得到建议“不要这样做”:)你要求的是没有全局的全局,这显然是不可能的。有更好的方法去做你想做的事;告诉我们它是什么。我正在尝试制作一个函数,使SQL查询更容易,它以$result(local)返回查询结果。我想在运行函数后将$result分配给另一个变量(全局),但不要这样做。你的代码会很糟糕。按照昆汀的建议去做,尽管这不是你要求的。这正是$http_response_头的工作原理-很遗憾,提出这个建议的人没有得到建议“不要这样做”:)我告诉过你,我想使用$bar而不分配。你给$bar分配了一个函数,这不是我所需要的。@yusufiqbalpk-这可能是你想要说的,但它很模糊,可以解释。我猜你的意思是“不用”。如果数据不在要使用它的范围内,则不能使用它。这是不合逻辑的,逻辑是编程的核心。请告诉我关于Brad Christie的答案。有什么不合逻辑的吗?@yusufiqbalpk-它将它分配给一个全局超变量(它在所有的范围内),所以它不是不合逻辑的。这只是一种实践,导致代码维护起来很糟糕。我告诉过你,我想使用$bar而不需要赋值。你给$bar分配了一个函数,这不是我所需要的。@yusufiqbalpk-这可能是你想要说的,但它很模糊,可以解释。我猜你的意思是“不用”。如果数据不在要使用它的范围内,则不能使用它。这是不合逻辑的,逻辑是编程的核心。请告诉我关于Brad Christie的答案。有什么不合逻辑的吗?@yusufiqbalpk-它将它分配给一个全局超变量(它在所有的范围内),所以它不是不合逻辑的。这只是一个实践,导致代码很难维护。嗯。。。这是“不在全局范围内分配该变量”吗?这就是OP不想做的事情。@Jon/Deleteman:是的,它在全局范围内定义了它,但是定义一个变量只是为了给它分配一个函数的返回值(你认为在昆汀的例子中,
$bar
是在哪里定义的?)。你必须,在某个时刻,在那里定义它。这是一个“预先定义”的问题,这个问题正在得到缓解。第一个例子是完美的,这就是我想要的。谢谢BradEh。。。这是“不在全局范围内分配该变量”吗?这就是OP不想做的事情。@Jon/Deleteman:是的,它在全局范围内定义了它,但是定义一个变量只是为了给它分配一个函数的返回值(你认为在昆汀的例子中,
$bar
是在哪里定义的?)。你必须,在某个时刻,在那里定义它。这是一个“预先定义”的问题,这个问题正在得到缓解。第一个例子是完美的,这就是我想要的。感谢Brad,我肯定在本例中,
$outside\u bar
$bar
都不是在全局范围内定义的,作为我的示例,它们显然是……在第三个示例中,
&
只应该是
&
,但改变它也是如此。@yusufiqbalpk修复了这个例子,这样你就不会避免使用全局变量。我肯定在这个例子中,
$outside\u bar
$bar
都不是在全局范围内定义的,在我的例子中,它们显然是……在第三个例子中,
&
只应该是
&
,但改变它也是如此。@yusufiqbalpk这样修复了这个例子
<?
function foo(){
    $bar = inside;
}
$outisde_bar = foo();
echo $outside_bar;
?>
<?
function foo(&$bar){
    $bar = inside;
}
foo($bar);
echo $bar;
?>