Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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_Function_Parameters - Fatal编程技术网

Php 将预定义变量作为函数参数传递

Php 将预定义变量作为函数参数传递,php,function,parameters,Php,Function,Parameters,index.php: require 'modulename.php'; $keyword = $_GET['q']; getResults(); $config = ... ; $service = ... ; function getResults($config, $service, $keyword) { ... } modulename.php: require 'modulename.php'; $keyword = $_GET['q']; getResults(); $

index.php

require 'modulename.php';
$keyword = $_GET['q'];
getResults();
$config = ... ;
$service = ... ;
function getResults($config, $service, $keyword) {
   ...
}
modulename.php

require 'modulename.php';
$keyword = $_GET['q'];
getResults();
$config = ... ;
$service = ... ;
function getResults($config, $service, $keyword) {
   ...
}
。。。但这带来了一个错误:

缺少在中调用的getResults()的参数2 第xx行的index.php,并在modulename.php中定义


。。。函数似乎没有使用已定义的变量,如何使用这些变量?

您创建了函数
getResults($config,$service,$keyword)
,该函数需要调用三个参数,但您调用它时没有任何参数。 你可以试试这个

在index.php中

require 'modulename.php';
$keyword = $_GET['q'];
getResults($keyword );
function getResults($keyword = '') {
    $config = ... ;
    $service = ... ;
    ...
}
modulename.php

require 'modulename.php';
$keyword = $_GET['q'];
getResults($keyword );
function getResults($keyword = '') {
    $config = ... ;
    $service = ... ;
    ...
}
您的
getResults()需要参数

getResults($config, $service, $keyword);
如果您没有参数,则默认设置
false

getResults($config=false, $service=false, $keyword)

错误消息指出arg 2缺失-在引用$keyword的函数中。在您提供的示例代码中,您定义了$config和$service,但没有定义$keyword-因此,通过为函数参数提供默认值,可以消除错误。但是,如果每个参数都是必需的,那么通过测试它们的值是否为false(这是该版本函数中的默认值),则函数将不会执行任何操作

或者,在调用函数之前定义每个变量:-

$config='';
$service='';
$keyword='';


function getResults($config=false, $service=false, $keyword=false) {
   if( $config && $service && $keyword ){
       ...
   }
}

函数getResults($config,$service,$keyword)
更改为
函数getResults($config=false,$service=false,$keyword=false)
若要使它们成为可选的,则必须将参数传递给函数调用,或对函数定义中的所有参数使用默认值。@匿名,但这只会使它们成为可选的,而我希望传递这些参数。它们以相同的名称存在于同一模块中。@Sagar
$config
$service
已在函数外部定义,我只需要将它们用作函数参数。@3zzy:然后不要将这两个变量传递到函数定义中,直接访问函数作用域或函数体中的变量。但是配置已经定义,我不想在函数内部重新定义它,只想使用在函数外部定义的相同名称的变量。因此可以将$config定义为全局$config,而$service已经在函数外部定义,我只需要将它们用作函数参数。@3zzy检查此选项,您不能重载PHP函数。函数签名仅基于它们的名称,不包括参数列表,因此不能有两个同名函数。PHP中的类方法重载与许多其他语言中的类方法重载不同。PHP使用相同的词,但它描述了不同的模式。