使用函数创建一组变量php

时间:2013-04-18 17:43:36

标签: php function variables scope

我正在尝试创建一个函数来创建一组像这样的数组

的变量
function breakDownPOSTArray($count, $fields) {
    $repeat = 1;
    $num = 0;   
    while ($repeat <= $count) {
        $a = "array" . $repeat;
        $$a = array_slice($_POST, $num, $fields);
        $repeat ++;
        $num += 4;
    }

我希望能够在函数之外使用这些变量。就目前而言,我正在声明函数之外的变量并将它们全局拉入,但感觉它正在击败对象并且我重复自己太多了。

有没有更好的方法来解决我想要的东西,而忽略了函数之外的变量?

4 个答案:

答案 0 :(得分:1)

你可以做的是返回一个数组并extract()函数的返回值。

function breakDownPOSTArray($count, $fields) {
    $repeat = 1;
    $num = 0;
    $array = array();
    while ($repeat <= $count) {
        $array["array" . $repeat] = array_slice($_POST, $num, $fields);
        $repeat++;
        $num += 4;
    }
    return $array;
}

// To call it:
extract(breakDownPOSTArray(..., ...));

答案 1 :(得分:0)

没有。函数中定义的变量在堆栈中创建,并且在函数返回后它们不再存在。

答案 2 :(得分:0)

假设你有充分的理由去完成你想要的......

变化

$a = "array" . $repeat;
$$a = array_slice($_POST, $num, $fields);

$GLOBALS["array" . $repeat] = array_slice($_POST, $num, $fields);

...对于一个错综复杂的设计感觉就像我一样,但是我看不到足够的代码来说明这一点。

答案 3 :(得分:0)

您可以将变量声明为全局变量,例如:

$sxml = new SimpleXMLElement('<somexml/>');

function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}

foo();

来源: Can't access global variable inside function