У меня есть небольшая функция поиска на моей странице; $ 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)){
Помещенные 'print_r', чтобы выяснить, где вы начинаете терять ваши данные .. –
отпечаток $ значению1 является массив я показываю на вершине, без array_search() он также показывает мне значения $ value1-> ActionScopeId и т. д. – Matheno
Да, вы идете. 'array_search' ищет в массиве, но' $ value1' на самом деле является объектом. (Если я не ошибаюсь) –