如何在全局中使用在局部范围内“不分配”创建的变量


how to use a variable created in local scope "without assigning" in global

>我正在尝试使用在本地范围内创建的变量,而不在全局中分配该变量。看看我的意思:

<?
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;
?>

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

function foo(){
  $GLOBALS['bar'] = 'baz';
}
foo();
echo $bar;

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

$bar = null;
function foo(){
  global $bar;
  $bar = 'baz';
}
foo();
echo $bar;

更好的替代方法是使用范围保留在对象内的对象,并且您仍然可以保留代码的结构和完整性:

class Foo
{
  var $bar = null;
  function Bar()
  {
    $this->bar = 'baz';
  }
}
$foo = new Foo();
$foo->Bar();
echo $foo->bar;

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

使用全局变量:通常不推荐,也不是您要查找的内容。

返回该变量的值:

<?
function foo(){
    $bar = inside;
}
$outisde_bar = foo();
echo $outside_bar;
?>

使用引用的变量作为函数的属性:

<?
function foo(&$bar){
    $bar = inside;
}
foo($bar);
echo $bar;
?>

这有帮助吗?