字符串上的数组过滤器

时间:2014-03-04 11:54:13

标签: php arrays array-filter

我有一个用户数组,我希望最终得到一个数组,其中用户名或全名包含某个字符($char)。我的数组看起来像这样:

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 36
                    [username] => JohnS
                    [fullname] => John Smith
                )

        )

    [1] => Array
        (
            [User] => Array
                (
                    [id] => 137
                    [username] => Tim
                    [fullname] => Tim Wilson
                )

        )

)

然而,当我运行这个数组过滤器时 - 无论$ char是什么值,我最终得到一个空$ result数组 -

$result = array_filter($users, 'matches');

function matches($var){
    return stripos($var["User"]["username"].$var["User"]["fullname"], $char) !== false;
}

任何想法??!

由于

1 个答案:

答案 0 :(得分:1)

$char函数中的matches未定义。 (如果它是全局变量,则必须先添加global $char;。)

或者如下所示:

$result = array_filter($users, function ($var) use ($char) {
  return stripos($var["User"]["username"].$var["User"]["fullname"], $char) !== false;
});