-1

我想检查我的对象具有的每个属性并检查它是否包含在给定的字符串中。问题是,我现在有 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 中,然后根据结果打印出真假。我怎么能做到这一点?

4

1 回答 1

0

你可以遍历它:

foreach($project as $key=>$value){
   echo $key.": (".$value.") ".strpos($localWrapper->siteContents, $value) !== false ? '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

小旁注:这可能会导致看起来很奇怪的文字,我没有让它漂亮,只是为了展示功能

于 2013-09-13T10:05:14.383 回答