PHP: доступ к свойству объекта с помощью переменной - PullRequest
0 голосов
/ 17 января 2011

Давайте предположим, что у меня есть массив свойств объекта, к которым я бы хотел получить доступ:

$properties = array('foo', 'bar');

Я бы хотел пройтись по объекту и получить динамический доступ к этим свойствам (в частности, я пытаюсьдинамически обрабатывать отсутствующие элементы JSON на основе массива ожидаемых элементов):

foreach ($data as $item) {
    foreach ($properties as $property) {
        if (empty($item->{$property})) {
            // Do something
        }
    }
}

Каждый элемент $ в $ data должен иметь свойства 'foo' и 'bar'.Я обрабатываю случаи, когда 'foo' или 'bar' не существует.

Я пытаюсь получить цикл (в строке 3) для доступа к $ item -> {'foo'} и$ item -> {'bar'}, но он не работает.

Есть идеи, почему?Я вполне уверен, что это вопрос синтаксиса, но, очевидно, я не смог понять это!

Спасибо!

Ответы [ 3 ]

3 голосов
/ 17 января 2011

Не могли бы вы использовать property_exists($item, $property).

foreach ($data as $item) {
    foreach ($properties as $property) {
        if ( property_exists($item, $property) ) {
            // Do something
        }
    }
}
1 голос
/ 17 января 2011

Если то, что вы делаете, включает изменение исходного набора элементов, имейте в виду, что foreach работает с копией исходного массива.Если вы хотите изменить вещи в исходном массиве, вам нужно использовать что-то вроде синтаксиса foreach($arr as $k => $v), а затем изменить $arr[$k].

0 голосов
/ 17 января 2011

Я понял это ...

Я думаю, что работал над неправильной частью объекта.

Спасибо за информативные ответы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...