我知道怎么做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
当大海捞针时,通过调试,它只是不返回它。
我错过了什么?
最佳答案
我认为你的问题与递归部分有关:
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;
}
关于php - 如果 strpos 不完全为假,如何返回真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20700685/