我有一个功能,需要一个"选项"用于设置查询数据库的标志的参数数组。看起来像这样
function c_SQL($SQL='', $FIELDS=array(), $OPTIONS=array('SINGLEROW'=>false,'foo'=>false,'bar'=>false)) {
}
如果我没有在函数调用中设置它们,我试图维护默认数组键:
$test = c_SQL($query,$fields,array('SINGLEROW'=>true));
当我们对未指定的数组键(foo和bar)进行检查时,这会在c_SQL函数内生成错误。
有没有办法维持' foo'和' bar'如果没有指定,只有在传递给函数时才更改密钥?
答案 0 :(得分: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)));
答案 1 :(得分:3)
您可以将默认值保留为常量,并使用array_merge
将它们应用于用户的输入:
<p class="example">Example One</p>
<p>Example Two</p>
<p class="example">Example Three</p>
<p>Example Four</p>
答案 2 :(得分:1)
尝试将$OPTIONS
指定为null
或空数组,然后检入函数检查它是否为null,如果为null则指定数组。看看这里..
function c_SQL($SQL='', $FIELDS=array(), $OPTIONS=NULL) {
if(empty($OPTIONS) {
$OPTIONS=array('SINGLEROW'=>false,'foo'=>false,'bar'=>false)
} else {
$othervalues = array('SINGLEROW'=>false,'foo'=>false,'bar'=>false);
$OPTIONS = array_merge($othervalues, $OPTIONS);
//do something here
}
}
答案 3 :(得分:1)
在函数体内创建默认选项,然后将新选项与array_merge
function c_SQL($SQL='', $FIELDS=array(), $OPTIONS=array()) {
$DEFAULTS = array('SINGLEROW'=>false,'foo'=>false,'bar'=>false);
$OPTIONS = array_merge($DEFAULTS, $OPTIONS);
}