我有一个带有数组的函数,其中包含许多在函数外部声明的变量。
以下是该功能的精简版本:
function get_badges(){
$badge_array = array(
array(
"Comment Freak",
($user_revision >= $revision_master_req) && ($tixx1 >= $tixx2)
),
array(
"Revision Freak",
($user_revisionx55 >= $revision_master_reqx134) && ($tixx11233 >= $tixx1342)
)
);
return $badge_array;
}
我的问题是,在考虑性能时,访问函数外部变量的最佳方法是什么?经过研究,我读到我需要使用globals
,但显然这不是一个好方法,特别是如果我有很多变量......
答案 0 :(得分:1)
您需要将变量作为参数传递,例如:
function get_badges($user_revision, $revision_master_req, etc... ){
$badge_array = array(
array(
"Comment Freak",
($user_revision >= $revision_master_req) && ($tixx1 >= $tixx2)
),
array(
"Revision Freak",
($user_revisionx55 >= $revision_master_reqx134) && ($tixx11233 >= $tixx1342)
)
);
return $badge_array;
}
答案 1 :(得分:1)
你可以将params作为数组传递。而且,您可以创建一个小帮助函数,为您构建此数组,因此您不需要每次都构建它。全球不是那么好,但这一次它会对你有帮助。
$args = getBagesArgs();
$bagets = get_badges($args);
function get_badges($args) {
$badge_array = array(
array(
"Comment Freak",
($args['user_revision'] >= $args['revision_master_req']) && ($args['tixx1'] >= $$args['tixx2'])
),
array(
"Revision Freak",
($args['user_revisionx55'] >= $args['revision_master_reqx134']) && ($args['tixx11233'] >= $args['tixx1342'])
)
);
return $badge_array;
}
function getBagesArgs() {
global $user_revision, $revision_master_req, $tixx1, $tixx2, $user_revisionx55, $revision_master_reqx134, $tixx11233, $tixx1342;
$args = array(
'user_revision' => $user_revision,
'revision_master_req' => $revision_master_req,
'tixx1' => $tixx1,
'tixx2' => $tixx2,
'user_revisionx55' => $user_revisionx55,
'revision_master_reqx134' => $revision_master_reqx134,
'tixx11233' => $tixx11233,
'tixx1342' => $tixx1342
);
return $args;
}
答案 2 :(得分:1)
致电
get_badges( array( 'user_revision ' => 4211
, 'revision_master_req' => 9845
, 'tixx1 ' => 778,
) );
身体:
function get_badges($all_vars=array()){
$badge_array = array(
array(
"Comment Freak",
($all_vars['user_revision'] >= $all_vars['revision_master_req']) && ($all_vars['tixx1 ']>= $all_vars['tixx2'])
),
etc...
);
return $badge_array;
}