我知道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
,通过调试,它只是不会返回它。
我错过了什么?
答案 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;
}