Php 将预定义变量作为函数参数传递
index.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(); $
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使用相同的词,但它描述了不同的模式。