数组错误中的用户角色

时间:2016-04-14 09:23:59

标签: php wordpress

您好我希望有人可以向我解释为什么我会收到错误:

'警告: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 ) ) {
  //
}

有人可以告诉我我做错了什么以及如何在数组中包含多个角色?

2 个答案:

答案 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
                       ^   ^