Доступ к свойствам объекта по переменной

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

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

$foo = new Object(); $foo->first = 'bar'; $array = array(0 =>'first', 1 =>'second'); $var = 0; return $foo->{$array[$var]}; 

Это вызывает ошибку «Примечание: неопределенное свойство: stdClass :: $ first». Удаление фигурных скобок возвращает одинаковый результат.

Что я не понимаю? (Фактический код и ошибка ниже – ошибка записывается в журнале Watchdog Drupal).

 private function load_questionnaire_queue($type, $comparator_id, $comparing_id_array) { $queue = array(); $type_map = array( 0 => "field_portfolio_district['und'][0]['nid']", 1 => "field_time_period['und'][0]['tid']", ); foreach ($this->questionnaires as $q) { // The commented code below works as expected // if ($q->field_portfolio_district['und'][0]['nid'] == $comparator_id && // in_array($q->field_time_period['und'][0]['tid'], $comparing_id_array)) // This returns an identical error, with or without braces: if ($q->{$type_map[$type]} == $comparator_id && in_array($q->{$type_map[!$type]}, $comparing_id_array)) { $queue[] = node_view($q, $view_mode = 'full'); } } $this->queue = $queue; } 

Примечание: Неопределенное свойство: stdClass :: $ field_portfolio_district ['und'] [0] ['nid'] в ComparisonChart-> load_questionnaire_queue ()

Это работает как шарм:

 <?php $foo = new StdClass(); $foo->first = 'bar'; $array = array(0 =>'first', 1 =>'second'); $var = 0; echo $foo->{$array[$var]}; ?> 

Но я сомневаюсь, что это сработает:

 <?php $foo = new StdClass(); $foo->first = array('a' => array('b' => 'test')); $array = array(0 =>'first["a"]["b"]', 1 =>'second'); $var = 0; echo $foo->{$array[$var]}; ?>