2013-08-27 2 views
0

У меня есть небольшая функция поиска на моей странице; $ searchWord - это слово, которое мне нужно искать в моем массиве. массив выглядит как это:Array_search в массиве объектов

stdClass Object ( 
[ActionScopeId] => 181365 
[DateChanged] => 0001-01-01T00:00:00 
[DateCreated] => 2013-08-20T13:59:33.053 
[Description] => Snelheid test 
[MessageCode] => C0000448220 
) 
stdClass Object ( 
[ActionScopeId] => 181364 
[DateChanged] => 0001-01-01T00:00:00 
[DateCreated] => 2013-08-14T10:08:50.707 
[Description] => Test 
[MessageCode] => C0000448219 
) 

Сейчас, к примеру; Я хочу найти слово «Тест». Когда он будет найден, я хочу напечатать с ним ActionScopeId и DateCreated.

Это мой код:

$roc = array('relation' => $_SESSION['username']); 
$rocresponse = $wcfclient->ReadOpenCalls($roc); 
foreach ($rocresponse->ReadOpenCallsResult as $key => $value){ 
    foreach ($value as $key1 => $value1){ 
    if (array_search($searchWord,$value1)){ 
     echo $value1->ActionScopeId; 
    } 
    } 
} 

Но результат я получаю всегда пустой. Что я делаю не так?


Я зафиксировал его, при попытке поиска в объекта вы можете использовать эту функцию:

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($value == $val){ 
       return true; 
      } 
     }else{ 
      return in_object($val, $value); 
     } 
    } 
    return false; 
} 

А затем посмотреть на это таким образом:

if (in_object($searchWord,$value)){ 
+0

Помещенные 'print_r', чтобы выяснить, где вы начинаете терять ваши данные .. –

+0

отпечаток $ значению1 является массив я показываю на вершине, без array_search() он также показывает мне значения $ value1-> ActionScopeId и т. д. – Matheno

+1

Да, вы идете. 'array_search' ищет в массиве, но' $ value1' на самом деле является объектом. (Если я не ошибаюсь) –

ответ

0

I исправлено это с использованием этой функции:

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($value == $val){ 
      return true; 
     } 
    }else{ 
     return in_object($val, $value); 
    } 
} 
return false; 

А затем посмотреть на это таким образом:

if (in_object($searchWord,$value)){} 
Смежные вопросы