2015-04-11 3 views
0

Хотите найти строку в объекте, нашел этот код в Интернете, но не похоже на работу вне-полки, так сказать:PHP - Найти строку в объект

private static function in_object($val, $obj) { 
    if($val == ""){ 
     trigger_error("in_object expects parameter 1 must not empty", E_USER_WARNING); 
     return false; 
    } 
    if(!is_object($obj)){ 
     $obj = (object)$obj; 
    } 

    foreach($obj as $key => $value){ 
     if(!is_object($value) && !is_array($value)){ 
      if(strpos($value,$val)!==FALSE){ 
       return true; 
      } 
     }elseif(is_array($value)) { 
      if(in_array($val, $value)!==FALSE){ 
       return true; 
      } 
     }else{ 
      return self::in_object($val, $value); 
     } 
    } 
    return false; 
} 

Это делает не возвращать сообщение об ошибке, экран просто остается пустым. Объект, который я ищу, будет включать массивы, и это один из массивов, который я хочу проверить для определенных текстовых строк.

Надеюсь, это было незначительной ошибкой и могло быть легко исправлено. Или, может быть, какое-то другое решение?

+0

Класс должен реализовать интерфейс «Итератор». См. Http://php.net/manual/en/language.oop5.iterations.php – Barmar

+0

Вам нужно будет уточнить, что не работает - появляется ли сообщение об ошибке? Или есть конкретный пример, который вы можете дать, где результат не тот, который вы ожидаете/хотите? (Пожалуйста, отредактируйте вопрос и добавьте детали, не просто разместите их как комментарии.) – IMSoP

ответ

0

Вы всегда можете это сделать, как своего рода работа вокруг.

$string_to_find = 'find_me'; 

foreach ($obj as $property => $value) { 
    if ($property == $string_to_find) { 
     // You found the string 
     $found_string = $property; 
    } 
    if ($value == $string_to_find) { 
     // You found the string 
     $found_string = $value; 
    } 
} 

Это найдет его как по недвижимости, так и по стоимости. Вы должны добавить некоторые ошибки для предотвращения проблем, если вы не на 100% уверены, что всегда будете использовать это на действительном объекте.

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