将变量传递给PHP方法

时间:2011-10-05 09:30:06

标签: php function

我有一个php函数,

func($c) {

global $a,$b;

//Do something

}

我这样称呼,

$c = "Test";
func($c);

但是在某些情况下我需要传递一个额外的参数$ b,它不应该被全局变量值覆盖,所以我尝试了这个,

func($c,$b = $b,$a = $a) {

//Do something

}

但是在PHP中,设置变量是不允许的。所以请在这里帮助我...

3 个答案:

答案 0 :(得分:3)

所以你想使用全局变量作为函数参数的默认值吗? 您可以使用以下代码,假设null永远不会作为有效参数传递。

function func($c, $b = null, $a = null) {
    if($b === null) $b = $GLOBALS['b'];
    if($a === null) $a = $GLOBALS['b'];
}

答案 1 :(得分:2)

使用func_get_args

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);
?>

答案 2 :(得分:0)

愿这对你有帮助。

<?php

    function doWork($options)
    {
        extract(
            merge_array(
                array(
                    'option_1' => default_value,
                    'option_2' => default_value,
                    'option_3' => default_value,
                    'option_x' => default_value
                ),
                $options
            )
        );

        echo $option_1; // Or do what ever you like with option_1
    }

    $opts = array(
        'option_1' => custom_value,
        'option_3' => another_custom_value
    );