0

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

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

现在你可能已经明白我在尝试什么了..?是的,我想回显该 $bar 而不在全局范围内分配它。

一些编码示例很受欢迎。

提前致谢

4

3 回答 3

2

使用返回值。

<?php
function foo(){
    $bar = "inside";
    return $bar;
}
$bar = foo();
echo $bar;
?>
于 2012-04-24T13:34:07.057 回答
1

唯一可能的方法是使用$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;
于 2012-04-24T13:34:59.977 回答
0

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

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

返回该变量的值:

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

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

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

这有帮助吗?

于 2012-04-24T13:36:48.643 回答