PHP Pass Array功能 - 如果未设置,则保持默认值

Bry*_*ker 2 php arrays function default-value

我有一个函数,它接受一个"Options"参数数组来设置查询数据库的标志.看起来像这样

function c_SQL($SQL='', $FIELDS=array(), $OPTIONS=array('SINGLEROW'=>false,'foo'=>false,'bar'=>false)) {

}
Run Code Online (Sandbox Code Playgroud)

如果我没有在函数调用中设置它们,我试图维护默认的数组键:

$test = c_SQL($query,$fields,array('SINGLEROW'=>true));
Run Code Online (Sandbox Code Playgroud)

当我们对未指定的数组键(foo和bar)进行检查时,这会在c_SQL函数内部生成错误.

如果没有指定,有没有办法维护'foo'和'bar',只有在传入函数时才更改密钥?

Ond*_*ček 5

您可以array_merge在函数内部使用与函数内定义的默认数组合并.

function c_SQL($SQL = '', $FIELDS=array(), $OPTIONS = array()) {
    $defaults =  array(
        'SINGLEROW' => false,
        'foo' => false,
        'bar' => false  
    );
    $OPTIONS = array_merge($defaults, $OPTIONS);
    return $OPTIONS;
}

#  array ( 'SINGLEROW' => false, 'foo' => false, 'bar' => false, )
var_export(c_SQL());

# array ( 'SINGLEROW' => true, 'foo' => false, 'bar' => false, )
var_export(c_SQL(array('SINGLEROW' => true)));
Run Code Online (Sandbox Code Playgroud)