Php 在另一个函数中定义局部变量

Php 在另一个函数中定义局部变量,php,object,functional-programming,Php,Object,Functional Programming,我一直在研究PHP中的和,看看是否有以下可能: function one() { setVars(); // $node would be in scope print_r($node); } function setVars() { return $node = '2'; } 这是一个经典的编程概念吗?反思似乎是最贴切的事情。基本上,我只想在不同的作用域(调用setVars()函数的函数的作用域/上下文)中定义变量。对于多个变量,请尝试将它们存储在数组中并返回数组 f

我一直在研究PHP中的和,看看是否有以下可能:

function one() {

  setVars();

  // $node would be in scope
  print_r($node);

}

function setVars() {
  return $node = '2';
}

这是一个经典的编程概念吗?反思似乎是最贴切的事情。基本上,我只想在不同的作用域(调用setVars()函数的函数的作用域/上下文)中定义变量。

对于多个变量,请尝试将它们存储在数组中并返回数组

function one() {

  $nodeArray = setVars();
  print_r($nodeArray );

}

function setVars() {
  $nodeArray[] = 1;
  $nodeArray[] = 1;
  $nodeArray[] = 1;
  return $nodeArray;
}
请看extract()


应该说,尽管这是可能的,但它通常会导致糟糕的体系结构和问题。

$node
不在其中。您必须执行
$node=setVars()
。。。除非我遗漏了什么。你可以返回一个数组,然后使用
extract
。。。或者jsut使用数组中的变量。@prodigitalson或者只使用我发布的示例中的
list
语法,就是为了这个目的而做的。@mavame我不明白为什么会这样做。如果你想把两个不同的函数紧密地耦合在一起,为什么不把它们放在一个公共类中,这样所有的方法都可以访问类属性(可以用像
setVars
这样的方法来设置)?我想没有必要压缩和提取。不,可能没有,但问题是关于在另一个范围内定义局部变量,我认为这是最接近的,我应该更清楚。我想定义多个变量,而不仅仅是一个。这是多个亲爱的。不同之处在于我将值存储在一个数组中,只是您的示例只返回一个值。然后,我需要对结果运行
extract
,以便在一个()中定义多个局部变量。谢谢你的回答,这一个阵列可以很容易地拆分。
function one() {

  $vars = setVars();
  extract($vars);

  // $node1 would be in scope
  print_r($node1);

}

function setVars() {
  $node1 = '1';
  $node2 = '2';
  return compact('node1','node2');
}