使用PHP函数但错过了参数

use*_*234 0 php

我有一个PHP函数:

function TicketsDisplay($status, $company = '', $contact = '', $show_status_name = 'no', $StatusColour = '000000', $StatusHeaderFontColour = '#FFFFFF', $FontColour = '#000000' ) {
...
}
Run Code Online (Sandbox Code Playgroud)

我在这里跑:

<?php TicketsDisplay('Customer Reply',$_GET["seq"]); ?>
Run Code Online (Sandbox Code Playgroud)

我想补充一下

$order = 'datetime DESC';
Run Code Online (Sandbox Code Playgroud)

作为函数的参数,但我如何确保当我添加到最后它不显示错误,因为其他参数是空白

更新:

如果我的功能如下:

 function TicketsDisplay($status, $company = '', $contact = '', $show_status_name = 'no', $StatusColour = '000000', $StatusHeaderFontColour = '#FFFFFF', $FontColour = '#000000', $order = 'datetime DESC' ) {
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我把我的功能称为:

<?php TicketsDisplay('Customer Reply',$_GET["seq"],'sequence ASC'); ?>
Run Code Online (Sandbox Code Playgroud)

肯定会认为结束参数是$contact

Mon*_*eus 6

不幸的是,PHP没有让你能够做这样的事情:

TicketsDisplay('Customer Reply',$_GET["seq"], , , , , $order);
Run Code Online (Sandbox Code Playgroud)

坦率地说,谢天谢地PHP不会让开发人员这样做^^

实际上你必须在两者之间填写每个参数.

更好的方法是在传递这么多参数时使用对象/数组:

所以你的功能最好看起来像这样:

function TicketsDisplay($options = array()) {

    // set defaults
    $defaultOptions = array();
    $defaultOptions['status'] = '';
    $defaultOptions['company'] = '';
    $defaultOptions['contact'] = '';
    $defaultOptions['show_status_name'] = 'no';
    $defaultOptions['StatusColour'] = '#000000';
    $defaultOptions['StatusHeaderFontColour'] = '#FFFFFF';
    $defaultOptions['FontColour'] = '#000000';
    $defaultOptions['order'] = '';

    // merge the arrays and have the $options overwrite any $defaultOptions
    $options = array_merge($defaultOptions, $options);

    // use your parameters like this
    echo $options['FontColour']; // will give you #000000 if you didn't pass in something different

    // as suggested by Nathan Dawson use extract to avoid breaking current compatibility within your function
    extract($options);

    // now you can simply:
    echo $FontColour;

}
Run Code Online (Sandbox Code Playgroud)
<?php

// now call it like this
TicketsDisplay(array('status'=>'Customer Reply', 'company'=>$_GET["seq"], 'order'=>'datetime DESC'));

// the code will let you optionally deviate from the defaults of the function

?>
Run Code Online (Sandbox Code Playgroud)

重要

需要注意的一件事是参数中使用的命名约定不一致会导致您头疼.

show_status_namevs StatusColourvscompany