2013-09-13 1 views
-1

Я хочу пройти через каждое свойство, которое имеет мой объект, и проверить, содержится ли он в заданной строке. Проблема в том, что теперь у меня есть 10 свойств и написано 10 if/else-cases. Я думаю, что может поставить под угрозу его, написав цикл по каждому элементуПерейдите по свойствам объекта, чтобы проверить, содержит ли строка

В настоящее время это, как этот

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, а затем распечатать истину или ложь, зависящую от результата. Как я мог это достичь?

+1

Как вы сказали, с цикл 'foreach'. Вы читали [руководство] (http://php.net/manual/en/language.oop5.iterations.php)? Вы что-нибудь пробовали? Это программирование; * делать * необходимо для достижения чего угодно. – Jon

+0

Да, я попробовал это только распечатать, но получил ошибки Код: foreach ($ project as $ key => $ value) { 10 echo $ key. ':'. $ value. '
'; } Ошибка: Примечание: Массив для преобразования строки в /Applications/XAMPP/xamppfiles/htdocs/localoptimizer/public_html/opanalyse.php на линию 19 данные: Array – loomie

+0

Ну, ваш объект обладает свойствами, которые являются массивами и те, которые не могут просто быть «эхо». Ничего удивительного. Вам придется подумать о том, как вы хотите с ними справиться. – Jon

ответ

0

Вы можете цикл через него:

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

Это действительно основное, хотя, если вы прочитали документацию по Еогеаспу, вы могли бы понять это сам :)

простого Google php loop through object дает ALLOT результатов, все делают то же самое :)


Если массив имеет массивы в качестве значений, вам нужно пойти рекурсивным. Эти функции проверяют, является ли значение строкой. если это так проверить его на 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 

Малого Sidenote: Это может привести к странному глядя текст, я не сделал это довольно просто, чтобы показать функциональность,

+0

Я тоже думал об этом, но я получаю эти erros Предупреждение: strpos(): игла не является строкой или целым числом в /Applications/XAMPP/xamppfiles/htdocs/localoptimizer/public_html/opanalyse.php в строке 18 верно Примечание: Объект класса валидатора не может быть преобразован в целом в /Applications/XAMPP/xamppfiles/htdocs/localoptimizer/public_html/opanalyse.php строки 18 верно – loomie

+0

Это означает, что значение Isnt строки. Является ли объект многомерным? возможно ли, чтобы значение представляло собой массив со значениями? Если это так, это не сработает, потому что ему нужны строки/Укажите «var_dump()», если ваш проект $ в вашей теме – Martijn

Смежные вопросы