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

我知道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,我总是得到错误,而不是if函数中的true.我知道如果针头存在于大海捞针中,通过调试,它只是没有返回它.

我错过了什么?

解决方法:

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

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

您可能想要使用返回值执行某些操作.喜欢:if($this-> search_objects($value))返回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;
}
上一篇:php的strpos函数中的通配符


下一篇:使用PHP通过字符串中搜索查询的位置对MySQL的搜索结果进行排序