我在WordPress中。我需要比较两个数组,然后取消设置其中一个匹配的任何匹配。麻烦的是,其中一个数组从get_users获取数据,所以我想我可能必须使用foreach将其转换为字符串,所以我可以告诉它为数组中的用户提供user_login。除非我错了,我认为我需要做的是获取数组,做一个foreach语句,这样我就可以告诉它获取user_logins,然后将它们全部转换回数组。这是我到目前为止所有的(我不确定我是否正确地在那里做if语句(“null”是否是正确的限定词):
$adminnames = get_users('role=administrator');
$result = array_intersect($adminnames, $username);
if($result !== null){unset($username[$result]);}
$ username是短代码中的一个属性。
另外,请原谅我的模糊性,如果“用户名”中只有一个人这意味着它不是一个数组吗?因为如果是这样可能搞砸了。
- 更新 -
如果获得所有管理员的user_login的唯一方法是做一个foreach然后回应它,这甚至可能是不可能的。
答案 0 :(得分:1)
我找到了一个效果很好的解决方案。我已经对$ username属性执行了preg_split,所以在运行之后,这就是我从$ username属性中取消设置管理员用户名所做的工作:
$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);
}
}