循环查询

问题描述:

//display faction userlevel: 

$level_boss = $req_faction_info['f_boss']; 
$level_uboss = $req_faction_info['f_uboss']; 
$level_rhm = $req_faction_info['f_rhm']; 
$level_lhm = $req_faction_info['f_lhm']; 
$level_r1 = $req_faction_info['f_r1']; 
$level_r2 = $req_faction_info['f_r2']; 

if($level_boss == $username){ $u_level = 'Boss'; } 
elseif($level_uboss == $username){ $u_level = 'Underboss'; } 
elseif($level_rhm == $username){ $u_level = 'Right Hand Man'; } 
elseif($level_lhm == $username){ $u_level = 'Left Hand Man'; } 
elseif($level_r1 == $username){ $u_level = 'Recruiter One'; } 
elseif($level_r2 == $username){ $u_level = 'Recruiter Two'; } 
else{ $u_level = 'Faction Member'; } 

echo '<div id="faction_userlevel">Your current level within the faction is: '.$u_level.'</div>'; 

必须有一个更简单的方法来做到这一点?循环查询

怎么样:

$levels = array(
    'f_boss' => 'Boss', 
    'f_uboss' => 'Underboss', 
    'f_rhm' => 'Right Hand Man', 
    'f_lhm' => 'Left Hand Man', 
    'f_r1' => 'Recruiter One', 
    'f_r2' => 'Recruiter Two' 
); 
$level = null; 
foreach($levels as $key => $val){ 
    if($username == $req_faction_info[$key]) $level = $levels[$key]; 
} 
if($level === null) $level = 'Faction Member'; 

echo '<div id="faction_userlevel">Your current level within the faction is: '.$level.'</div>'; 
+0

谢谢!我很惊讶我的答案有多快! :D – 2010-08-14 19:01:40

好吧......做到这一点:

foreach($req_faction_info AS $key => $val){ 
    $$key = $val; 
} 

switch $username{ 
    case $f_boss: 
     $u_level = "Boss"; 
     break; 

    case $f_uboss: 
     $u_level = "Underboss"; 
     break; 
} 

嗯......想不出任何其他方式真正做到这一点。

$level=array(
    'Faction Member', 
    'f_boss'=>'Boss', 
    'f_uboss'=>'Underboss', 
    'f_rhm'=>'Right Hand Man', 
    'f_lhm'=>'Left Hand Man', 
    'f_r1'=>'Recruiter One', 
    'f_r2'=>'Recruiter Two' 
); 
echo '<div id="faction_userlevel">Your current level within the faction is: '.$level[array_search($username,$req_faction_info)].'</div>'; 
+0

但你错过了“派系成员”的情况。 – darma 2010-08-14 18:56:00

+1

简单易如反掌。答案固定。如果未找到匹配项,array_search将返回FALSE。 FALSE将对应于数组中的索引元素0。 – stillstanding 2010-08-14 19:01:23