如何从函数中保存变量?

时间:2015-09-21 18:09:35

标签: php

函数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);// ### ? ###
?>

3 个答案:

答案 0 :(得分:1)

$arrB 内部您的函数不存在。你可以声明这个变量'global',即:声明它存在外部你的函数 - 这样你的函数就可以修改它。

function fun($param) {

    global $arrB;

    for(...){
        .....
    }  

}

或者,您可以将$arrB传递给您的函数引用,这将对修改原始变量的函数产生类似的影响。

function fun($param, &$arrB){

    .....

}

答案 1 :(得分:1)

您可以使用静态变量:

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!"
}

这允许“staticked”变量在其包含函数返回后保持活动状态。如果没有static关键字,$arr将在每次调用函数时初始化,并且数组只会包含一个内容。

如果需要函数外部可用的变量,则使用此static方法,然后返回新数组。或者只使用全局变量。

答案 2 :(得分:0)

全球关键字

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

global $arrB;