如何保存函数中的变量


How to save variables from functions?

函数fun()正在计算变量$short中的一系列值。

我希望能够访问之前执行fun()函数时计算的值(将所有结果保存在一个数组中)。

我如何将$short变量的每个值保存在数组$arrB中,以便在函数返回后可以访问?

<?php
$arrA=array('a','b','c','d','e');
$arrB=array();// ### ? ###
function fun($param)
{
 for($i=0;$i<3;$i++)
 {
  $short='['.$param.$i.']';
  echo$short;
  array_push($arrB,$short);// ### ? ###
 }
}
foreach($arrA as $var)
{
 fun($var);
}
print_r($arrB);// ### ? ###
?>

$arrB不存在你的函数。你可以声明这个变量为"全局",即:声明它存在于之外的你的函数-这样你的函数可以修改它。

function fun($param) {
    global $arrB;
    for(...){
        .....
    }  
}

或者,您可以通过引用将$arrB传递到函数中,这将具有与函数修改原始变量类似的效果。

function fun($param, &$arrB){
    .....
}

您可以使用静态变量:

php > function foo ($x) {
    static $arr = array();
    $arr[] = $x;
    var_dump($arr);
}
php > foo(1);
array(1) {
  [0]=>
  int(1)
}
php > foo('hi mom!');
array(2) {
  [0]=>
  int(1)
  [1]=>
  string(7) "hi mom!"
}

这允许"静态化"变量在包含它的函数返回后保持活跃。如果没有static关键字,$arr将在每次调用函数时初始化,并且数组将只包含一个内容。

如果您需要在函数外部可用的变量,则使用此static方法,并返回新数组。或者直接使用全局变量

全局关键词

http://php.net/language.variables.scope

global $arrB;