您好我希望有人可以向我解释为什么我会收到错误:
'警告:in_array()要求参数2为数组,字符串为'
使用以下代码:
$user = wp_get_current_user();
if ( in_array( 'teacher','student', (array) $user->roles ) ) {
//
}
我也尝试过使用:
$roles = array('student','teacher');
$user = wp_get_current_user();
if ( in_array( $roles, (array) $user->roles ) ) {
//
}
有人可以告诉我我做错了什么以及如何在数组中包含多个角色?
答案 0 :(得分:1)
根据手册: - http://php.net/manual/en/function.in-array.php
您需要提供第一个参数string
,第二个参数是您要搜索的array
,第三个参数是type of search
。
所以应用foreach()
: -
$roles = array('student','teacher');
$user = wp_get_current_user();
foreach ($roles as $role){
if ( in_array( $role, (array) $user->roles ) ) {
// do your stuff
}
}
注意: - 这仅在$user->roles
为一维时才有效
阵列。
答案 1 :(得分:1)
in_array
的{{3}}清楚地向您显示它只接受1针和1个haystack参数。
你需要做的就是这样(会有很多方法)。
function checkForRole($roles, array $array) {
foreach($roles as $role) {
if(in_array($role, $array) {
return true;
}
}
return false;
}
if(checkForRole($roles, (array) $user->roles)) {
// do something
}
修改强>
只是为了添加(我不知道这一点,所以感谢让我查一下),in_array
可以使用数组作为针,但是它会在haystack中搜索整个数组,所以这个例子返回真:
in_array(['a','b'], [['a','b']]); // note the multidimensional array haystack
^ ^