如果strpos不完全错误,如何返回true?

时间:2013-12-20 09:47:44

标签: php codeigniter strpos

我知道strpos是如何工作的,并且它按预期工作,但if函数中的返回不是。

一些代码:

foreach ($socialstream as $key => $social) {
    //filtering in here
    $result= $this->search_objects($social);
    ....
}

我的函数search_objects:

function search_objects($objects)
{
    $filters = array('word', 'test');
    foreach ($objects as $key => $value) {
        if (is_array($value) || is_object($value)) {
            $this->search_objects($value);
        } else {
            //look for faulty strings in value
            foreach ($filters as $filter) {
                if (!is_int($value) && strpos($value, $filter) !== false) {
                    return true;
                }
            }

        }
    }
    return false;
}

如果我打印出$result,我总会返回false,而不是true函数中的if。我知道当针头存在于大海捞针中时它会到达if,通过调试,它只是不会返回它。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我认为你的问题与递归部分有关:

    if (is_array($value) || is_object($value)) {
        $this->search_objects($value);
    }

您可能想要使用返回值执行某些操作。喜欢:if ($this->search_objects($value)) return true;

(然后,我不确定你要完成什么)

编辑:试试这个:

function search_objects($objects)
{
    $filters = array('word', 'test');
    foreach ($objects as $key => $value) {
        if (is_array($value) || is_object($value)) {
            if ($this->search_objects($value)) {
                return true;
            }
        } else {
            //look for faulty strings in value
            foreach ($filters as $filter) {
                if (!is_int($value) && strpos($value, $filter) !== false) {
                    return true;
                }
            }

        }
    }
    return false;
}