我知道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;
}