浏览对象属性以检查字符串是否包含

时间:2013-09-13 10:02:43

标签: php oop object foreach

我想浏览我的对象拥有的每个属性,并检查它是否包含在给定的字符串中。问题是,我现在有10个属性,写了10个if / else-cases。我想我可以通过写一个foreach循环来妥协它

目前就像这样

if (strpos($localWrapper->siteContents, $project->company_name) !== false)
            echo "<br>true<br>";
        else
            echo 'false<br>';
        if (strpos($localWrapper->siteContents, $project->company_street) !== false)
            echo 'true<br>';
        else
            echo 'false<br>';

等等。

必须有一种方法可以遍历项目对象的每个属性,并检查它是否包含在siteContents-string中,然后根据结果打印出true或false。 我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以遍历它:

foreach($project as $key=>$value){
   echo $key.": (".$value.") ".strpos($localWrapper->siteContents, $value) ? 'true' : 'false';
   echo '<br />';
}

这是非常基本的,如果您已阅读有关foreach的文档,您可以自己解决这个问题:)

一个简单的谷歌php loop through object给出了所有结果,都做了同样的事情:)


如果您的数组将数组作为值,则需要递归。此函数检查值是否为字符串。如果是这样测试你的searchString。如果是数组,请对新数组执行相同操作

function SeeIfMyValuesMatch($searchString, $array){
    foreach($array as $key=>$value){
        echo $key.' ';
        // Check if the value is an array, if so, go 1 deeper
        if( is_array($value){
            SeeIfMyValuesMatch($searchString, $value); // on deeper
        }
        else{
            echo strpos($searchString, $value) ? 'true' : 'false'; // or echo
        }
        echo '<hr />'; // This is just for looks
    }
}

SeeIfMyValuesMatch($project); // And start

小旁注:这可能会导致看起来很奇怪的文字,我不是很漂亮,只是为了显示功能性