我想浏览我的对象拥有的每个属性,并检查它是否包含在给定的字符串中。问题是,我现在有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。 我怎么能做到这一点?
答案 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
小旁注:这可能会导致看起来很奇怪的文字,我不是很漂亮,只是为了显示功能性