2011-06-03 77 views
2

我正在嘗試生成最終字符串以顯示基於某些條件的用戶。這可以寫得更好嗎? PHP代碼

$flag=0; 
$var='Please '; 
if($user->is_details_updated == 'N' && $user->needs_to_update_details == "Y") 
{ 
    $var='update your profile details'; 
    $flag=1; 
} 
if ($flag ==1) 
{ 
    $var=' and '; 
} 
if($user->is_pass_changed == 'N' && $user->needs_to_update_password == "Y") 
{ 
    $var.='change password'; 
} 

所以,如果三個if回報true然後最終$var看起來是這樣的:

請更新您的個人資料詳細信息和更改密碼

這可怎麼寫比較好?

+0

你可以在[Code Review](http://codereview.stackexchange.com/)上發表 - 另一個StackExchange頁面,這個問題比這裏更適合。 – Xaerxess 2011-06-03 11:42:08

回答

6

您可以郵件添加到陣列,然後用and

$var = arrray() 
if($user->is_details_updated == 'N' && $user->needs_to_update_details == "Y") 
{ 
    $var[] ='update your profile details'; 

} 

if($user->is_pass_changed == 'N' && $user->needs_to_update_password == "Y") 
{ 
    $var[]='change password'; 
} 

echo join(" and ", $var); 
+0

該死的,只是打到它...... +1 :)。 – Matt 2011-06-03 11:41:06

+1

@ skowron-line不要使用「U」,請在Stack Overflow上使用「你」。 「聊天說話」在此處被明確禁止。 – meagar 2012-06-11 20:59:31

+0

@meagar抱歉,這個im用來寫這樣的。但會改變它 – 2012-06-11 22:10:22

3

如何加入他們:

$sayings = array(); 

if($user->is_details_updated == 'N' && $user->needs_to_update_details == "Y") { 
    $sayings[] = 'update your profile details'; 
} 

if($user->is_pass_changed == 'N' && $user->needs_to_update_password == "Y") { 
    $sayings[] = 'change password'; 
} 

$var = 'Please ' . implode(' and ', $sayings); 
0

另一項建議是(如果可能的話),以重構$user->is_details_updated$user->needs_to_update_details$user->is_pass_changed$user->needs_to_update_password屬性返回布爾值true/false值。這可能會在稍後節省一些調試頭痛。