函数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.scopeglobal $arrB;