Как я могу проверить, доступно ли значение массива в массиве объекта stdclass - PullRequest
2 голосов
/ 20 сентября 2011

Я пытаюсь проверить, доступен ли идентификатор в этом массиве объектов std, я не хочу перебирать массив, так как он не будет отображать правильную информацию. Мой код выглядит следующим образом:

  Array(
    [0] => stdClass Object
        (
            [name] => My Name
            [id] => 1234567890
        )
    [1] => stdClass Object
        (
            [name] => Other User Name
            [id] => 987654321
        )
  )

Я пытался использовать метод in_array, но он не нашел ключ и значение id.

Спасибо D ~~

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Вам понадобится зациклить массив, чтобы выполнить проверку атрибутов объектов внутри массива. Напишите функцию, которая будет возвращать желаемое значение, например (псевдокод):

function returnObjectForId($idToMatch){
    foreach ($array as $i => $object) {
        if($object->id == $idToMatch){
            return $object
        }
    }
}
0 голосов
/ 26 июля 2014

С помощью ответа Anzeo я немного обновил его, чтобы работать с другими свойствами и использовать его в условных выражениях. Взгляните:

function my_in_array($needle, $haystack = array(), $property){
    foreach ($haystack as $object) {
        if($object->$property == $needle){
            return true;
        } else {
            return false;
        }
    }
}
foreach($foo as $bar) {
    if(!my_in_array($bar, $arrWithObjects, 'id')) {
        //do something
    }
}

Надеюсь, это будет полезно для кого-то другого

РЕДАКТИРОВАТЬ

Я также нашел хороший прием для преобразования свойств объекта в массив, который может помочь в некоторых ситуациях.

foreach($arrWithObjects as $obj) {
    $objProps = get_object_vars($obj);
    if(in_array('My Name', $objProps)) {
        //do something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...