首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP默认参数值

PHP默认参数值
EN

Stack Overflow用户
提问于 2014-04-21 16:18:50
回答 2查看 129关注 0票数 0

我正在使用php default argument values,并且在传递多个参数时感到困惑。

我已经创建了自己的函数,就像bellow一样,这是php.net的示例(示例#3)

代码语言:javascript
复制
function makecoffee($type = "cappuccino") {
    return "Making a cup of $type.\n";
}

echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");

我创建了这个:

代码语言:javascript
复制
$table_fields = array('id', 'fname', 'lname', 'phone', 'message');
$table_name = 'Some Table';

function table($table_name, $table_fields= "*", $limit= 10) {

    echo 'Table Name '. $table_name;

    echo "<br />";

    echo 'Table Fields '. $com_table_fields = implode(", ", (array)$table_fields);  

}

table($table_name, $table_fields);

我已经在函数中传递了这两个参数,并得到以下结果:

代码语言:javascript
复制
Table Name Some Table
Table Fields id, fname, lname, phone, message

如果我不在参数中传递$table_name,我会得到这个默认的结果,这很完美。

代码语言:javascript
复制
Table Name Some Table
Table Fields *

现在我添加了一个默认的参数(检查下面),当我删除这个参数时,$table_fields变量的值发生了变化,这是不正确的。

代码语言:javascript
复制
$table_fields = array('id', 'fname', 'lname', 'phone', 'message');
$table_name = 'Some Table';
$limit = 5;

function table($table_name, $table_fields= "*", $limit= 10) {

    echo 'Table Name '. $table_name;

    echo "<br />";

    echo 'Table Fields '. $com_table_fields = implode(", ", (array)$table_fields);

    echo "<br />";

    echo 'Limit '. $limit;

}

table($table_name, $limit);

我希望上面的结果是这样的:

代码语言:javascript
复制
Table Name: Some Table
Table Fields: *
Limit: 10
EN

回答 2

Stack Overflow用户

发布于 2014-04-21 18:03:52

函数参数通过它们的位置传递,即它们被传递的顺序。第二个函数参数将始终是第二个函数参数。

代码语言:javascript
复制
function foo($arg1, $arg2 = null, $arg3 = 42) { ... }
               ^      ^             ^
               |      |             |
               v      v             v
         foo($bar,  $baz,         $quorx);

要“跳过”参数,即使是带有默认值的参数,也需要传递一些值来代替它。通常,您将传递默认值:

代码语言:javascript
复制
function table($table_name, $table_fields = "*", $limit = 10) { ... }
table($table_name, "*", $limit);
票数 0
EN

Stack Overflow用户

发布于 2014-04-21 16:54:14

代码语言:javascript
复制
$table_fields = array('id', 'fname', 'lname', 'phone', 'message');
$table_name = 'Some Table';
$limit = 5;

function table($table_name, $limit= 10, $table_fields= "*") {

    echo 'Table Name '. $table_name;

    echo "<br />";

    echo 'Table Fields '. $table_fields;

    echo "<br />";

    echo 'Limit '. $limit;

}

table($table_name, $limit);

输出为:

代码语言:javascript
复制
Table Name Some Table
Table Fields *
Limit 5

在您的代码中,$com_table_fields = implode(",",(数组)$table_fields);是混乱的

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23193574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档