-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 に含まれているかどうかを確認し、結果に応じて true または false を出力する方法が必要です。どうすればこれを達成できますか?

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 に答える