2013-10-06 1 views
1

저는 WordPress에 있습니다. 두 배열을 비교 한 다음 그 중 하나에서 일치 항목을 설정 해제해야합니다. 문제는 배열 중 하나가 get_users에서 데이터를 가져 오는 것이므로 foreach를 사용하여 문자열로 변환해야 할 수도 있기 때문에 배열의 사용자에 대해 user_login을 제공하도록 말할 수 있습니다. 내가 틀린 것이 아니라면, 내가 할 수있는 일은 배열을 가져 와서 foreach 문을 써서 user_logins을 가져 와서 배열로 다시 변환하는 것이라고 말할 수있을 것이라고 생각한다. 여기에 지금까지 모두 (그리고 내가 제대로 거기에 내가 if 문하고있어 여부에 대해 확실하지 않다 ("널 (null)"는 바로 한정자) 여부 :두 배열을 비교 한 다음 PHP에서 일치 항목을 설정 해제하십시오.

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

$ 사용자 이름은 속성 중 하나입니다 . 한 사람은 "이름"에있을 경우 단축 코드에 또한

, 내 흐릿한 용서 즉, 배열이 아니에요 의미합니까 '원인 그렇다면 그 힘 엉망이 최대

-. UPDATE -

모든 관리자의 user_login을 얻는 유일한 방법은 foreach가 echo 한 다음에는 이것이 가능하지 않을 수도 있습니다.

+0

은 그래서 당신은'$의 username' 아닌 모든 관리자의 사용자 이름을 얻으려면? '$ username' 배열입니까? 어떻게 정의됩니까? –

+0

제가 지적했듯이 $ username은 shortcode의 속성입니다. [단축 코드 사용자 이름 = "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

필자는 이틀이 지나면 다시 할 것입니다. –