【问题标题】:Go through object properties to check if string contains通过对象属性检查字符串是否包含
【发布时间】:2013-09-13 10:02:43
【问题描述】:

我想检查我的对象的每个属性并检查它是否包含在给定的字符串中。问题是,我现在有 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。 我怎样才能做到这一点?

【问题讨论】:

  • 如您所说,带有foreach 循环。你读过the manual吗?你有什么尝试吗?这是编程; 是实现任何事情的必要条件。
  • 是的,我试过这个只是为了打印出来,但得到了错误代码:foreach ($project as $key => $value) { echo $key . ':'。 $价值。 '
    ';错误:注意:/Applications/XAMPP/xamppfiles/htdocs/localoptimizer/public_html/opanalysis.php 中第 19 行数据中的数组到字符串转换:数组
  • 好吧,您的对象具有数组属性,而这些属性不能只是echoed。那里没有什么令人惊讶的。您将不得不考虑如何处理它们。
  • @jon 他没有回显这些值 :) 我认为它是一个多维数组,其中一些值是数组。
  • @Martijn:他在呼应价值观,看看我的第一条回复。

标签: php oop object foreach


【解决方案1】:

你可以循环遍历它:

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

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

【讨论】:

  • 我当然也想过这个,但我得到了这些错误警告:strpos():needle is not a string or an integer in /Applications/XAMPP/xamppfiles/htdocs/localoptimizer/第 18 行的 public_html/opanalysis.php 为 true 注意:第 18 行的 /Applications/XAMPP/xamppfiles/htdocs/localoptimizer/public_html/opanalysis.php 中的类 Validator 的对象无法转换为 int 为 true
  • 这意味着该值不是字符串。对象是多维的吗?一个值是否有可能是一个有值的数组?如果是这样,这将不起作用,因为它需要字符串/如果您的 $project 在您的主题中,请提供var_dump()
  • strpos($searchString, $value) 在这个 sn-p 中不可靠,因为 0 偏移量是错误的。
猜你喜欢
  • 2019-06-27
  • 1970-01-01
  • 2018-05-06
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多