2013-10-06 63 views
1

我在WordPress。我需要比較兩個數組,然後取消設置其中一個匹配。麻煩的是,其中一個數組從get_users獲取數據,所以我想我可能需要使用foreach將其轉換爲字符串,所以我可以告訴它爲數組中的用戶提供user_login。除非我錯了,否則我認爲我需要做的就是獲取數組,然後執行foreach語句,以便我可以告訴它抓取user_logins,然後將它們全部轉換回數組。這裏就是我有這麼遠(我不知道是否我做的if語句正確的有(無論是「空」是正確的限定詞):比較兩個數組,然後取消設置php中的匹配

$adminnames = get_users('role=administrator'); 
$result = array_intersect($adminnames, $username); 
if($result !== null){unset($username[$result]);} 

$ username是屬性之一在

而且短碼,原諒我的模糊性,如果只有一個人在「用戶名」是否意味着它不是一個數組因爲如果這樣有可能搞砸

? - 更新 -

如果獲得所有管理員的user_login的唯一方法是做然後一個foreach迴應它,這可能不可能。

+0

所以你要得到的是不是'$ username'所有管理員的用戶名?是'$ username'一個數組?它是如何定義的? –

+0

正如我所指出的,$ username是簡碼中的一個屬性。 [shortcode username =「joebob,billybob,jennybob」] 無論如何,我剛剛發現了一個可行的解決方案。將顯示答案。 –

+0

你應該使用[explode](http://www.php.net/manual/en/function.explode.php) –

回答

1

我發現了一個很好的解決方案。我已經做了$用戶名屬性使preg_split,所以以後我運行,這是我對我所做的沒有設置管理員的用戶名從$用戶名屬性:

$users = preg_split("/[\s,]+/",$username); 
wp_get_current_user(); 
if(current_user_can(administrator)){ 
     $nohidename = array_search($current_user->user_login,$users); 
     if($nohidename !== FALSE){unset($users[$nohidename]); 
     } 
} 

所以它只是根據是否當前用戶是管理員。如果不是,它會保持原樣。很棒。

編輯 - 一個更簡單的方式做到這一點,而array_search:

if(current_user_can(administrator)){ 
     if($username){ 
      unset($username); 
     } 
} 
+0

你應該接受這個作爲你的答案然後 – gwillie

+0

我會在必要的兩天時間結束。 –

相關問題