Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在函数中调用特定参数_Php - Fatal编程技术网

Php 在函数中调用特定参数

Php 在函数中调用特定参数,php,Php,虽然我已经自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为 下面是一个示例函数: public function example($foo = null, $bar = null) { if ($foo) { // Do something } if ($bar) { // Do Something } } 现在,如果我编写一个如下所示的调用,我希望立即调用$bar(第二个参数),但事实并非如此——这对我来说是有道理

虽然我已经自学了很多,但今天我一直在努力解决在函数中调用参数的意外行为

下面是一个示例函数:

public function example($foo = null, $bar = null) {
    if ($foo) {
        // Do something
    }

    if ($bar) {
        // Do Something
    }
}
现在,如果我编写一个如下所示的调用,我希望立即调用$bar(第二个参数),但事实并非如此——这对我来说是有道理的

$this->example($bar);
有没有一种方法可以直接调用第二个参数而不使用以下参数

$this->example(null, $bar);

正如Darren和他的例子所建议的,可以使用函数func_get_args,但差别不大,所以应该使用适合自己的函数。 虽然使用func_get_args看起来不太舒服,但不使用直接参数的原因是什么?选择任何要用作指示符的值(null、false、“barambam”),并执行如下操作:

const ARGFALSE = 29292929299;
function foobar($f, $o, $o, $b, $a, $r){
if (!$f)// equivalent to $f != false
echo 'First arg should not be used.';
If (!$o == ARGFALSE)echo 'Second is taging along with the first';
foobar(false, ARGFALSE);
尽管如此,在某些(或大多数)情况下,您可能会逆向操作(另一个示例):


由于您将其定义为一个参数,因此需要按以下顺序填充:
$this->example(null,$bar)。否则,
$bar
将被指定为第一个参数。如果出现混淆,名称是独立的,即您可以调用
$this->example(null,$b)
$this->示例($a,$b)
$this->示例($blah)func\u get\u args()
的东西,并向您的函数传递一个数组,如下所示。(这根本不是最好的做法。我个人会避免这种做法。)这是有道理的。我以前见过这种情况,我想知道为什么会有人走这条路。谢谢,我也会尽量避免,但至少我知道这种方式是存在的。
function getUsers($type, $limit = false) { // or your default value. It can be almost anything.
$query = 'Select from users where type = ?';
If($limit){
$query .= ' limit ?';
return $result = Db::run($query, [$type, $limit]);
}else{
return $result = Db::run($query, [$type]);
}
}